ASP.NET 証明書利用者アプリケーションの構築
WS-Federation 1.2 仕様では、このシナリオはパッシブ リクエスター プロファイルと呼ばれています。 ブラウザー クライアントを使用してフォーム リダイレクトを実行します。クライアント側では WS-Trust シリアル化ロジックは使用されません。 これにより、パッシブ フェデレーションを使用する ASP.NET Web アプリケーションのセキュリティを保護するために役立つ、次の 2 つの手法が利用できるようになります。
FederatedPassiveSignIn コントロールを使用する。
<PassiveRedirect>
要素をweb.config
ファイルのMicrosoft.IdentityModel
構成セクションに追加する。
2 番目の方法では、Web アプリケーションで WSFederationAuthenticationModule を有効化する必要があります。 認証セッションを保持するには、SessionAuthenticationModule も必要です。 詳細については、「WS フェデレーション認証モジュールの概要」を参照してください。
フェデレーション用のサインイン ページを構成する方法は、(1) FederatedPassiveSignIn コントロールを使用する方法と、(2) パッシブ リダイレクト用に WS-FAM を構成する方法の 2 つがあります。
方法 1: FederatedPassiveSignIn コントロールを使用する
WIF で用意されている FederatedPassiveSignIn コントロールを使用して、Web アプリケーションと要求ベースの ID モデルとを簡単に統合して、Web アプリケーションを要求に対応させることができます。 このコントロールを使用すると、Web アプリケーションがユーザーをリダイレクトする STS アドレスを指定することにより、認証プロセスを Web アプリケーションから STS に移動できます。 STS からの応答を受け取ると、コントロールは応答に含まれているセキュリティ トークンを認証します。 成功した場合、呼び出し元で以降の呼び出しで使用する Cookie が発行され、再度 STS にリダイレクトする必要がないようにします。 Cookie の有効期限が切れた場合、新しいセキュリティ トークンを取得するために、呼び出し元が STS に対して再度認証を行う必要があります。
Visual Studio 2005 を使用する場合は、開始する前に、WIF コントロールが Visual Studio ツールボックスにインストールされていることを確認します。 そのためには、ツールボックスを開いて右クリックし、[アイテムの選択] をクリックします。 表示されたダイアログ ボックスの [.NET Framework コンポーネント] タブをクリックし、右下の [参照] ボタンをクリックします。 WIF のインストール フォルダー内の Reference Assemblies ディレクトリの Microsoft.IdentityModel.dll
アセンブリを選択し、[開く] をクリックします。 次に [OK] をクリックします。 ツールボックス ウィンドウ内の [標準] カテゴリの下に、新しいコントロールが表示されます。 そのコントロールの 1 つが FederatedPassiveSignIn
です。以下の手順ではこのコントロールを使用します。
Visual Studio で、ページからツールボックスへ
FederatedPassiveSignIn
コントロールを追加します。[Issuer] プロパティに特定のトークン発行者の URL を指定します。
[Realm] プロパティを設定します。 これは、STS で証明書利用者インスタンスを識別し、対応するトークン発行ポリシーと暗号化証明書を選択するために使用されます。
トークンを検証するときに呼び出されるハンドラーなどのイベント ハンドラーをマークアップで設定できます。 また、トークン認証が問題なく実行された後で Cookie をユーザーに返すか ([SignInMode] に
Session
を設定)、または Cookie を返さないかを指定することもできます。 後者の場合、ユーザーが新しい要求を送ったときに呼び出し元は STS に再度リダイレクトされます ([SignInMode] をSingle
に設定)。 既定値はSession
です。[外観] カテゴリでさまざまなプロパティを設定することにより、コントロールの外観および動作をカスタマイズできます。 たとえば、[SignInButtonStyle] プロパティでは、表示されるページでコントロールをクリック可能な画像にするか、または単純なリンクにするかを指定できます。
次のサンプル コードは、FederatedPassiveSignIn
コントロールのマークアップを示しています。
<wif:FederatedPassiveSignIn id="FederatedPassiveSignIn1" runat="server" Issuer="https://www.contoso.com:441/PassiveIdentityProvider/default.aspx" SignInButtonType="Link" Realm="https://www.contoso.com:441" OnSecurityTokenReceived="FederatedPassiveSignIn1_SecurityTokenReceived"> </wif:FederatedPassiveSignIn>
方法 2: <passiveRedirect> 要素を使用して呼び出し元の自動的なサインインを実行する
WS-FAM の <passiveRedirect>
構成要素を使用して、認証されていないユーザーのリクエストを指定された STS に自動的にリダイレクトすることができます。 federatedAuthentication
要素を Microsoft.IdentityModel
セクションに追加して、パッシブ リダイレクトを有効にする必要があります。 自動的なパッシブ リダイレクトを有効にする場合、2 つの属性が必要です。 issuer
属性は、トークンを発行する STS を指定します。 realm
属性は、証明書利用者 ID を STS に提供します。 これらの属性は、前のセクションで説明した FederatedPassiveSignIn
コントロールの Issuer
プロパティおよび Realm
プロパティと同じことを示しています。 次のコード サンプルは、この要素を追加する方法を示しています。
<federatedAuthentication enabled="true"> <passiveRedirect enabled="true" issuer="https://localhost/SimplePassiveSTS1/default.aspx" realm="https://localhost/ClaimsAwareWebApp1"></passiveRedirect> </federatedAuthentication>
詳細については、「ASP.NET 証明書利用者アプリケーションを構築する方法」を参照してください。