5/17/2011

WebMatrix とか MVC とか ASP.NET で SSO する

MIX11のキーノートなどで、WebMatrix とか Orchard とか使った Webアプリケーションの紹介がありました。勢いに圧倒されて、少し使ってみることにしましたが、沢山のWebアプリケーションを簡単にインストールできるのであれば、これらのWebサイト間の認証も気になります。今回は、いろいろなWebアプリケーション間のWebMatrixやMVCやOchardでも使えるSSO(シングルサインオン)について紹介します。

ASP.NETのフォーム認証のSSOについて簡単に説明を行うと、フォーム認証により認証された情報はCookieにより暗号化されて保存されます。このCookieにユーザ名などの認証情報が入っているため、各Webアプリケーション間で暗号化されたデータを取得できるように同じ設定にしてあげてユーザ名を取得できるようにするわけです。主な設定内容は以下になります。

・Cookieの名前を同じに設定
・Cookieが利用されるドメイン設定
・暗号化に使用するキー情報を同一に設定

たとえば、web1.mydomain.co.jp と、web2.mydomain.co.jp というWebアプリケーション間でSSOを行いたい場合は、各Webアプリケーションのweb.configに同じ設定を行います。設定内容は以下のような感じです。

<machineKey 
  validationKey="1230000000000000000000000000000000000000,IsolateApps"
  decryptionKey="12300000000000000000000000000000,IsolateApps"
  validation="SHA1" decryption="AES" />
<authentication mode="Forms">
  <forms
    name="SSO"
    loginUrl="/Account/LogOn"
    timeout="2880"
    domain="mydomain.co.jp" />
</authentication>

とりあえず試すには、Orchardで認証した後に、WebMatrixで作ったサイトにアクセスしてもよいのではないかと思います。

かなり、端折っていてすいません。

参考URLは以下です。

Explained: Forms Authentication in ASP.NET 2.0
http://msdn.microsoft.com/en-us/library/ff647070.aspx
machineKey 要素 (ASP.NET 設定スキーマ)
http://msdn.microsoft.com/ja-jp/library/w8h3skw9.aspx
FormsAuthentication プロパティ
http://msdn.microsoft.com/ja-jp/library/eazszwdc(v=VS.80).aspx