2010年10月20日水曜日

AD FS2.0 のデモをする時のひと工夫

AD FS2.0(Active Directory Federation Services 2.0)はクラウド連携というビッグキーワードも手伝ってかなり注目されているのか、最近は色々なところでセミナーやデモを見かけるようになってきました。

ただ、シングルサインオンのデモって非常に地味なんですよね。
ターゲットのアプリケーションにアクセスして、一瞬AD FS2.0へリダイレクトされて統合Windows認証でそのまま元のページへトークンをPOST、ログイン完了という流れにどうしてもなってしまうので、本当にAD FS2.0を使っているかどうかが全然見ている人には伝わりません。

私もデモをする時に同じ悩み?を持ち、ブラウザの統合Windows認証をオフにしたり、インターネットオプションの「ローカル イントラネット」からAD FS2.0のサーバやドメインを削除したりしましたが、ベーシック認証が走ってしまったりしてやはりあんまりうまくありませんでした。
とにかくデモ映えするには明示的にAD FS2.0のログインページにIDとパスワードを入力する、というステップがあった方が良いと思ったので、デフォルトでフォーム認証を使うようにしてみました。

手順は若干強引ですが、AD FS2.0も単なるWIF(Windows Identity Foundation)を使ったASP.NETアプリケーションである、という点に着目してログインページのweb.configファイルを直接編集します。

デフォルトインストールだと「C:\inetpub\adfs\ls\web.config」が編集対象となります。

編集箇所は59行目から始まるmicrosoft.identityServer.webセクションのlocalAuthenticationTypesです。
デフォルトだと

 <add name="Integrated" page="auth/integrated/" />
 <add name="Forms" page="FormsSignIn.aspx" />

という順番でまずIntegratedつまり統合Windows認証が使われるようになっていますが、これを

 <add name="Forms" page="FormsSignIn.aspx" />
 <add name="Integrated" page="auth/integrated/" />

という形でFormsつまりフォーム認証を優先する形に行を入れ替えてみます。

■編集の結果
 <microsoft.identityServer.web>
  <localAuthenticationTypes>
   <add name="Forms" page="FormsSignIn.aspx" />
   <add name="Integrated" page="auth/integrated/" />
   <add name="TlsClient" page="auth/sslclient/" />
   <add name="Basic" page="auth/basic/" />
  </localAuthenticationTypes>

これでファイルを上書き保存するとフォーム認証が優先されるのでAD FS2.0の認証ページにリダイレクトされた際にIDとパスワードを入力するフォーム認証画面が表示されます。
※web.configのバックアップは忘れずに!
















これで少しはイメージのしやすいデモが出来ると思います。

0 件のコメント: