从内部从安全的WCF Web服务调用

时间:2013-02-11 13:41:11

标签: wcf wcf-security wif ws-security

我们有一个使用自定义STS活动联合实现保护的wcf web服务。

因此,客户必须联系STS以获取“令牌”,以便在WCF服务中调用这些方法。

我很困惑如何从服务本身拨打自助服务电话。

步骤如下

  1. 客户端致电STS获取令牌
  2. 使用此令牌,它调用WCF服务中的方法
  3. WCF服务中的方法正在执行
  4. 我需要通过创建频道工厂并使用线程中可用的引导令牌来调用另一个Web服务方法
  5. 如何实施第4步?

    public int GetValue(string input)
    {
        CallGetValue1();
        return int.Parse(input);
    }
    
    public int GetValue1()
    {
        return int.MaxValue;
    }
    
    private void CallGetValue1()
    {
        var channelFactory = new ChannelFactory<IWCFService>("WCFService");
        channelFactory.Credentials.SupportInteractive = false;
        channelFactory.ConfigureChannelFactory();
        var proxy = channelFactory.CreateChannelWithIssuedToken(GetSecurityToken());
        var result = proxy.GetValue1();
    }
    
    private static SecurityToken GetSecurityToken()
    {
        var identity = Thread.CurrentPrincipal.Identity as IClaimsIdentity;
        return identity.BootstrapToken;
    }
    

    CallGetValue1给了我一些错误@ proxy.GetValue1()

    System.ServiceModel.FaultException`1 [System.ServiceModel.ExceptionDetail]:安全令牌验证器'System.ServiceModel.Security.Tokens.GenericXmlSecurityTokenAuthenticator'无法验证类型为'System.IdentityModel.Tokens.SamlSecurityToken'的令牌。 (Fault Detail等于ExceptionDetail,可能由IncludeExceptionDetailInFaults = true创建,其值为: System.IdentityModel.Tokens.SecurityTokenValidationException:安全令牌身份验证器'System.ServiceModel.Security.Tokens.GenericXmlSecurityTokenAuthenticator'无法验证类型为'System.IdentityModel.Tokens.SamlSecurityToken'的令牌。

    对不起,我不知道要添加更多细节。如果您需要更多详细信息,请在评论中回复。谢谢:))

0 个答案:

没有答案