Получение легкого токена SSO от PingFederate с использованием WCF или WIF
Я пишу клиент, используя WCF для демонстрационных настроек, предоставляемых PingFederate, аналогично тому, как описано в этом посте ( Получение токена из PingFederate с использованием WIF). Моя проблема в том, что на втором этапе мне нужно обменять токен SAML на легкий токен SSO на SP. Я получаю исключение при сериализации ответа от ИП
ID3135: The element 'TokenType' with namespace 'http://docs.oasis-open.org/ws-sx/ws-trust/200512' has value 'BASE64BINARY' which is not an absolute URI.
насколько я понимаю, WS2007FederationHttpBinding не может обрабатывать токены такого типа.
Я ищу объяснения, как такой сценарий должен быть обработан.
Код клиента выглядит следующим образом (после получения токена SAML от IDP)
var binding = new WS2007FederationHttpBinding();
binding.Security.Mode = WSFederationHttpSecurityMode.TransportWithMessageCredential;
binding.Security.Message.IssuedKeyType = SecurityKeyType.BearerKey;
binding.Security.Message.EstablishSecurityContext = false;
var factory = new WSTrustChannelFactory(binding, new EndpointAddress(SP_EndPoint));
factory.TrustVersion = TrustVersion.WSTrust13;
factory.Credentials.SupportInteractive = false;
var rst = new RequestSecurityToken
{
RequestType = RequestTypes.Issue,
//AppliesTo = new EndpointReference(@"http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous"),
};
RequestSecurityTokenResponse rstr;
var channel = factory.CreateChannelWithIssuedToken(idpToken);
SecurityToken spToken = channel.Issue(rst, out rstr);
return spToken;