如何在C#

时间:2017-05-19 14:58:33

标签: c# soap wsdl saml adsf

我尝试通过使用SAML令牌验证自己来调用SOAP服务。 首先,我通过调用ADFS获取目标的SAML令牌:

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 Web服务。如何添加令牌?我已经尝试了以下但没有成功(soap请求不包含任何令牌):

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

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

知道如何在请求中使用令牌吗?

0 个答案:

没有答案