При попытке создать пользовательский токен STS с помощью JwtSecurityToken получено следующее сообщение об ошибке:
System.NotSupportedException: «JwtSecurityToken» не поддерживает создание «SamlAssertionKeyIdentifierClause». *
Я использую .NET / WCF / WIF 4.5
JwtSecurityTokenHandler из
System.IdentityModel.Tokens.Jwt, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken= 31bf3856ad364e35
Любая помощь высоко ценится.
Трассировка стека выглядит следующим образом:
Трассировка стека сервера: в System.IdentityModel.Tokens.SecurityToken.CreateKeyIdentifierClauseT в System.ServiceModel.Security.Tokens.SecurityTokenParameters.CreateKuseternalElaserClayIuseXierIceierier(SecurityToken маркер, SecurityTokenReferenceStyle referenceStyle) в System.ServiceModel.Security.SendSecurityHeader.SignWithSupportingTokens () в System.ServiceModel.Security.SendSecurityHeader.CompleteSecurityApplication () в System.ServiceModel.Security.SecurityAppliedMessage.OnWriteMessage (XmlDictionaryWriter писатель) в System.ServiceModel.Channels.BufferedMessageWriter.WriteMessage (сообщение сообщение, BufferManager bufferManager, Int32 initialOffset, Int32 maxSizeQuota) на System.ServiceModel.Channels.TextMessageEncoderFactory.TextMessageEncoder.WriteMessage (сообщение сообщение, Int32 MaxMessageSize, BufferManager bufferManager, Int32 messageOffset) в System.ServiceModel.Channels.HttpOutput.SerializeBufferedMessage (Сообщсообщение, Boolean shouldRecycleBuffer) в System.ServiceModel.Channels.HttpOutput.Send (тайм-аут TimeSpan) в System.ServiceModel.Channels.HttpChannelFactory 1.HttpRequestChannel.HttpChannelRequest.SendRequest(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.SecurityChannelFactory
1.SecurityRequestChannel.Request (сообщение сообщения, TimeSpanServiceServiceService).RequestChannelBinder.Request (сообщение-сообщение, время ожидания TimeSpan) в System.ServiceModel.Channels.ServiceChannel.Call (строковое действие, логический односторонний метод, операция ProxyOperationRuntime, Object [] ins, Object [] outs, TimeSpan timeout) в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (метод IMethodCallMessageCall, операция ProxyOperationRuntime) в System.ServiceModel.Channels.ServiceChannelProxy.Invoke (сообщение IMessage)
WS2007FederationHttpBinding ws2007FederationHttpBinding = CreateStsBinding();
RequestSecurityToken request = new RequestSecurityToken
{
RequestType = RequestTypes.Issue,
AppliesTo = new EndpointReference("appliestoURLGoeshere"),
KeyType = KeyTypes.Symmetric,
TokenType = "urn:ietf:params:oauth:token-type:jwt"
};
EndpointIdentity rpIdentity = new X509CertificateEndpointIdentity(new X509Certificate2(Convert.FromBase64String("base64CertificateValues")));
WSTrustChannelFactory factory = new WSTrustChannelFactory(ws2007FederationHttpBinding, new EndpointAddress(new Uri("endpointUri"), rpIdentity))
{
TrustVersion = TrustVersion.WSTrust13
};
factory.Credentials.SupportInteractive = false;
factory.Credentials.UseIdentityConfiguration = true;
factory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
factory.Credentials.ServiceCertificate.Authentication.RevocationMode = X509RevocationMode.NoCheck;
IWSTrustChannelContract channel = factory.CreateChannelWithIssuedToken(myJwtIssuedToken);
//...............Receive error here............
SecurityToken securityToken = channel.Issue(request);
return securityToken;