SAML トークンとクレーム
SAML (Security Assertion Markup Language) トークンは、クレームの XML 表現です。既定では、フェデレーション セキュリティ シナリオで Windows Communication Foundation (WCF) が使用する SAML トークンは、"発行済みトークン" です。
SAML トークンは、ステートメント (特定のエンティティによって他のエンティティに関して作成されるクレームのセット) を伝達します。たとえば、フェデレーション セキュリティ シナリオでは、ステートメントがセキュリティ トークン サービスによって、システム内の特定のユーザーに関して作成されます。セキュリティ トークン サービスは、トークンに含まれるステートメントの信憑性を示すために SAML トークンに署名します。また、SAML トークンは、SAML トークンのユーザーが証明として提示する暗号化キー マテリアルに関連付けられています。これが証拠となり、証明書利用者は、SAML トークンが実際にそのユーザーに対して発行されたことを確認できます。一般的なシナリオでの例を次に示します。
クライアントは、セキュリティ トークン サービスから SAML トークンを要求し、Windows 資格情報を使用して、そのセキュリティ トークン サービスに対して認証を行います。
セキュリティ トークン サービスは、SAML トークンをクライアントに発行します。SAML トークンは、セキュリティ トークン サービスに関連付けられた証明書を使用して署名され、ターゲット サービス用に暗号化された証明キーを含んでいます。
クライアントは、証明キーのコピーも受け取ります。クライアントは、発行された SAML トークンをアプリケーション サービス (証明書利用者) に提示し、証明キーを使用してメッセージに署名します。
SAML トークンの署名は、そのトークンがセキュリティ トークン サービスによって発行されたことを証明書利用者に示します。また、証明キーを使用して作成されたメッセージ署名は、トークンがそのクライアントに対して発行されたことを示します。
クレームから SamlAttributes
WCF では、SAML トークン内のステートメントは SamlAttribute オブジェクトとしてモデル化されています。Claim オブジェクトが PossessProperty の Right プロパティを持ち、Resource プロパティが String 型である場合、このオブジェクトは Claim オブジェクトから直接設定できます。次に例を示します。
Dim myClaim As New Claim(ClaimTypes.GivenName, "Martin", _
Rights.PossessProperty)
Dim sa As New SamlAttribute(myClaim)
Claim myClaim = new Claim(
ClaimTypes.GivenName, "Martin", Rights.PossessProperty);
SamlAttribute sa = new SamlAttribute(myClaim);
![]() |
---|
セキュリティ トークン サービスによって発行されたか、または認証の一部としてクライアントからサービスに提示されたときに、SAML トークンがメッセージ内にシリアル化される場合、メッセージの最大クォータ サイズが、SAML トークンおよびメッセージの他の部分を格納できるだけの大きさである必要があります。通常は、既定のメッセージ クォータ サイズで十分です。ただし、何百ものクレームを含んでいるために SAML トークンのサイズが大きい場合には、シリアル化されたトークンを格納できるように、クォータを増やす必要が生じることがあります。詳細については、次のトピックを参照してください。、「セキュリティに関するデータの考慮事項」を参照してください。 |
SamlAttributes からクレーム
SAML トークンがメッセージで受信されると、SAML トークン内のさまざまなステートメントは、IAuthorizationPolicy オブジェクトに変換され、AuthorizationContext に配置されます。各 SAML ステートメントのクレームは AuthorizationContext の ClaimSets プロパティによって返され、これを調べることによってユーザーの認証と承認を行うかどうかを決定できます。
参照
処理手順
方法 : フェデレーション クライアントを作成する
方法 : フェデレーション サービスで資格情報を設定する
方法 : カスタム クレームを作成する
リファレンス
AuthorizationContext
IAuthorizationPolicy
ClaimSet