方法 : カスタム セキュリティ トークン認証システムを作成する
ここでは、カスタム セキュリティ トークン認証システムの作成方法と、これをカスタム セキュリティ トークン マネージャに統合する方法を示します。セキュリティ トークン認証システムは受信メッセージと共に提出されるセキュリティ トークンの内容を検証します。検証に成功すると、認証システムは IAuthorizationPolicy インスタンスのコレクションを返します。これが評価されるとクレーム セットが返されます。
Windows Communication Foundation (WCF) でカスタム セキュリティ トークン認証システムを使用するには、カスタム資格情報とセキュリティ トークンマネージャの実装をあらかじめ作成しておく必要があります。カスタム資格情報とセキュリティ トークン マネージャの作成の詳細については、「方法 : カスタム クライアントおよびサービスの資格情報を作成する」を参照してください。資格情報、セキュリティ トークン マネージャ、およびプロバイダ クラスと認証システム クラスの詳細については、「セキュリティ アーキテクチャ」を参照してください。
手順
カスタム セキュリティ トークン認証システムを作成するには
SecurityTokenAuthenticator クラスから派生する新しいクラスを定義します。
CanValidateTokenCore メソッドをオーバーライドします。カスタム認証システムが受信トークンの種類を検証できるかどうかによって、メソッドから
true
またはfalse
が返されます。ValidateTokenCore メソッドをオーバーライドします。このメソッドでは、トークンの内容を適切に検証する必要があります。トークンが検証手順をパスすると、IAuthorizationPolicy インスタンスのコレクションが返されます。下記の例では、次の手順で作成するカスタム承認ポリシーの実装を使用します。
上記のコードでは、CanValidateToken メソッドに承認ポリシーのコレクションが返されます。WCF には、このインターフェイスのパブリックな実装は用意されていません。以下の手順では、これを独自の要件について実行する方法を示します。
カスタム承認ポリシーを作成するには
IAuthorizationPolicy インターフェイスを実装する新しいクラスを定義します。
Id の読み取り専用プロパティを実装します。このプロパティを実装する方法の 1 つは、クラスのコンストラクタでグローバル一意識別子 (GUID) を生成し、この値をプロパティの値が求められるたびに返すことです。
Issuer の読み取り専用プロパティを実装します。このプロパティは、トークンから取得されるクレーム セットの発行者を返す必要があります。この発行者は、トークンの発行者、またはトークンの内容を検証する証明機関に対応している必要があります。次の例では、前の手順で作成したカスタム セキュリティ トークン認証システムから、このクラスに渡された発行者クレームを使用します。カスタム セキュリティ トークン認証システムでは、(System プロパティから返される) システム提供のクレーム セットを使用して、ユーザー名トークンの発行者を表します。
Evaluate メソッドを実装します。このメソッドは (引数として渡される) EvaluationContext クラスのインスタンスに、受信セキュリティ トークンの内容に基づいたクレームを設定します。評価が完了したら、メソッドは
true
を返します。実装が、評価コンテキストに追加情報を提供する他の承認ポリシーの存在に依存している場合、必要な情報が評価コンテキスト内に存在していないと、このメソッドはfalse
を返します。この場合、承認ポリシーによって評価コンテキストが 1 つでも変更されていると、この受信メッセージのために生成された他のすべての承認ポリシー評価の終了後に、WCF は、このメソッドを再び呼び出します。
カスタム資格情報とカスタム セキュリティ トークン マネージャの作成方法については、「方法 : カスタム クライアントおよびサービスの資格情報を作成する」を参照してください。ここで作成したカスタム セキュリティ トークン認証システムを使用するには、CreateSecurityTokenAuthenticator メソッドからカスタム認証システムを返すようにセキュリティ トークン マネージャの実装を変更します。適切なセキュリティ トークン要件が渡されると、このメソッドは認証システムを返します。
カスタム セキュリティ トークン マネージャにカスタム セキュリティ トークン認証システムを統合するには
カスタム セキュリティ トークン マネージャの実装の CreateSecurityTokenAuthenticator メソッドをオーバーライドします。
SecurityTokenRequirement パラメータに基づいてカスタム セキュリティ トークン認証システムを返すロジックをメソッドに追加します。次の例では、トークン要件のトークンの種類が (UserName プロパティで表される) ユーザー名で、セキュリティ トークン認証システムで要求されているメッセージの方向 (Input フィールドで表される) が入力である場合、カスタム セキュリティ トークン認証システムが返されます。
関連項目
タスク
方法 : カスタム セキュリティ トークン プロバイダを作成する
リファレンス
SecurityTokenAuthenticator
SecurityTokenRequirement
SecurityTokenManager
UserNameSecurityToken