小编Wou*_*oos的帖子

在不使用WIF的情况下在WCF服务调用中包含SAML2.0令牌

我正在尝试设置WCF受保护的服务ADFS.我目前能够请求令牌,并使用请求发送WIF,并Thinktecture IdentityModel 4.5用下面的代码:

static SecurityToken GetToken()
{
    var factory = new WSTrustChannelFactory(
          new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential),
          "https://fs2.server2012.local/adfs/services/trust/13/usernamemixed") 
    {
        TrustVersion = TrustVersion.WSTrust13 
    };


    if (factory.Credentials != null)
    {
        factory.Credentials.UserName.UserName = @"username";
        factory.Credentials.UserName.Password = "password";
    }

    var rst = new RequestSecurityToken
    {
        RequestType = RequestTypes.Issue,
        KeyType = KeyTypes.Symmetric,
        AppliesTo = new EndpointReference(
            "https://wcfservicecertificate/wcfservice/Service.svc/wstrust"),
    };

    var channel = factory.CreateChannel();
    RequestSecurityTokenResponse rstr;
    return channel.Issue(rst, out rstr);
}
Run Code Online (Sandbox Code Playgroud)

有了这个,我可以使用以下方法调用WCF服务ChannelFactory.CreateChannelWithIssuedToken:

var factory = new ChannelFactory<IService>(binding, 
    new EndpointAddress("https://wcfservicecertificate/wcfservice/Service.svc/wstrust"));
if …
Run Code Online (Sandbox Code Playgroud)

c# wcf adfs saml-2.0 .net-4.5

14
推荐指数
1
解决办法
3056
查看次数

标签 统计

.net-4.5 ×1

adfs ×1

c# ×1

saml-2.0 ×1

wcf ×1