Как добавить токен SAML в запрос SOAP в C#

Я пытаюсь вызвать службу SOAP, аутентифицируя себя с помощью токена SAML. Сначала я получаю токен SAML для цели, вызывая ADFS:

var stsEndpoint = "https://ADFS.EXAMPLE/adfs/services/trust/13/kerberosmixed";
var reliantPartyUri = "http://reliant-party.com";

var binding = new CustomBinding();
var ssbe = SecurityBindingElement.CreateKerberosOverTransportBindingElement();
ssbe.DefaultAlgorithmSuite = SecurityAlgorithmSuite.Basic128;
ssbe.MessageSecurityVersion = MessageSecurityVersion.WSSecurity10WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10;            
binding.Elements.Add(ssbe);

binding.Elements.Add(new TextMessageEncodingBindingElement());
binding.Elements.Add(new HttpsTransportBindingElement());

var factory = new WSTrustChannelFactory(binding, new EndpointAddress(stsEndpoint));
factory.TrustVersion = TrustVersion.WSTrust13;

var rst = new RequestSecurityToken
{
    RequestType = RequestTypes.Issue,
    AppliesTo = new EndpointReference(reliantPartyUri)
};

var channel = factory.CreateChannel();
var token = channel.Issue(rst);

Теперь я хочу использовать токен SAML для вызова защищенного веб-сервиса SOAP. Как можно добавить токен? Я попытался следующее безуспешно (запрос мыла не содержит токена):

//Service was created by an imported WSDL File - Methods and Types renamed for Stackru
var request = new Service.WsdlCreatedRequest();
[...]

var wsdlClient = new Service.WsdlCreatedService("HTTPS_Port");            
var wsdlChannel = wsdlClient.ChannelFactory.CreateChannelWithIssuedToken(token);      
wsdlChannel.WsdlCreatedMethod(request);

Есть идеи, как использовать токен в запросе?

0 ответов

Другие вопросы по тегам