WCF データ サービス/REST/OData サーバーのコンテキストで WIF の世界を理解しようとしています。単体テスト プロジェクト内で実行されている SelfSTS のハッキング バージョンがあります。単体テストが開始されると、SAML トークンを生成する WCF サービスが開始されます。これは、生成される SAML トークンです。
<saml:Assertion MajorVersion="1" MinorVersion="1" ... >
<saml:Conditions>...</saml:Conditions>
<saml:AttributeStatement>
<saml:Subject>
<saml:NameIdentifier Format="EMAIL">4bd406bf-0cf0-4dc4-8e49-57336a479ad2</saml:NameIdentifier>
<saml:SubjectConfirmation>...</saml:SubjectConfirmation>
</saml:Subject>
<saml:Attribute AttributeName="emailaddress" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims">
<saml:AttributeValue>bob@bob.org</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute AttributeName="name" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims">
<saml:AttributeValue>bob</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
<ds:Signature>...</ds:Signature>
</saml:Assertion>
(NameIdentifier の Format が実際には EMAIL ではないことはわかっています。これはまだ片付けていないものです。)
実際のサーバー内に、Pablo Cabraro / Cibrax から借用したコードをいくつか入れました。このコードは A-OK を実行しているように見えますが、何が起こっているのか理解できません。コードの後半で、ID を確認する必要がある場合は、すべての属性に対するクレームと、saml:Subject の NameIdentifier 要素の値を持つ nameidentifier クレームを持つ のThread.CurrentPrincipal.Identity
インスタンスであることに注意してください。Microsoft.IdentityModel.Claims.ClaimsIdentity
またNameClaimType
、「http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name」を指すプロパティもあります。nameidentifier にマップした方が理にかなっNameClaimType
ていますね。どうすればそれを実現できますか?それとも、名前の主張の間違ったことを期待していますか?
ありがとう!