ASP.NET 証明書利用者アプリケーションの構築

WS-Federation 1.2 仕様では、このシナリオはパッシブ リクエスター プロファイルと呼ばれています。 ブラウザー クライアントを使用してフォーム リダイレクトを実行します。クライアント側では WS-Trust シリアル化ロジックは使用されません。 これにより、パッシブ フェデレーションを使用する ASP.NET Web アプリケーションのセキュリティを保護するために役立つ、次の 2 つの手法が利用できるようになります。

  1. FederatedPassiveSignIn コントロールを使用する。

  2. <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 です。以下の手順ではこのコントロールを使用します。

  1. Visual Studio で、ページからツールボックスへ FederatedPassiveSignIn コントロールを追加します。

  2. [Issuer] プロパティに特定のトークン発行者の URL を指定します。

  3. [Realm] プロパティを設定します。 これは、STS で証明書利用者インスタンスを識別し、対応するトークン発行ポリシーと暗号化証明書を選択するために使用されます。

  4. トークンを検証するときに呼び出されるハンドラーなどのイベント ハンドラーをマークアップで設定できます。 また、トークン認証が問題なく実行された後で Cookie をユーザーに返すか ([SignInMode] に Session を設定)、または Cookie を返さないかを指定することもできます。 後者の場合、ユーザーが新しい要求を送ったときに呼び出し元は STS に再度リダイレクトされます ([SignInMode] を Single に設定)。 既定値は Session です。

  5. [外観] カテゴリでさまざまなプロパティを設定することにより、コントロールの外観および動作をカスタマイズできます。 たとえば、[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 証明書利用者アプリケーションを構築する方法」を参照してください。