我正在尝试将声明感知的 WCF 服务和客户端放在一起。
我正在使用thinktecture Identity Server,并且通过查看“使用带有 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
,如下所示:
序列化安全密钥标识符时出错。有关更多详细信息,请参阅内部异常。
内部异常如下:
令牌序列化程序无法序列化“System.IdentityModel.Tokens.Saml2AssertionKeyIdentifierClause”。如果这是自定义类型,则必须提供自定义序列化程序。
我能找到的唯一提到的这个问题是MSDN 论坛上的这个问题,但这只是稍微相关。
在调试器中查看,端点行为似乎包括(最终)一个 Saml2SecurityTokenHandler,其他链接暗示这就是所需要的。
我错过了什么?