クレーム対応のWCFサービスとクライアントをまとめようとしています。
私はthinktectureIdentityServerを使用しており、「WCF / SOAPでのトークンの使用」の例を見て、コンソールクライアントをまとめました。
var token = GetSecurityToken();
var binding =
new WS2007FederationHttpBinding(
WSFederationHttpSecurityMode.TransportWithMessageCredential);
binding.Security.Message.EstablishSecurityContext = false;
var factory =
new ChannelFactory<IService1>(
binding,
new EndpointAddress("https://localhost:44301/Service1.svc"));
factory.Credentials.SupportInteractive = false;
factory.ConfigureChannelFactory();
var service = factory.CreateChannelWithIssuedToken(token);
var result = service.GetData(42);
私はSTSからの有効なトークンを持っています(どのように見えるか)。
ただし、次のように、への呼び出しで例外がスローGetData
されます。
セキュリティキー識別子のシリアル化中にエラーが発生しました。詳細については、内部の例外を参照してください。
内部例外は次のとおりです。
トークンSerializerは、「System.IdentityModel.Tokens.Saml2AssertionKeyIdentifierClause」をシリアル化できません。これがカスタムタイプの場合は、カスタムシリアライザーを提供する必要があります。
私が見つけることができるこの問題の唯一の言及は、MSDNフォーラムでのこれですが、それはわずかに関連しています。
デバッガーを見ると、エンドポイントの動作には(最終的には)Saml2SecurityTokenHandlerが含まれているように見えます。これは、他のリンクが必要なすべてであることを意味します。
私は何が欠けていますか?