0

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

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

我很困惑如何从服务本身进行自助服务调用。

步骤如下

  1. 客户端调用 STS 获取 Token
  2. 使用此 Token 它调用 WCF 服务中的方法
  3. WCF 服务中的方法正在执行
  4. 我需要通过创建通道工厂并使用线程中可用的引导令牌来调用另一个 Web 服务方法

第四步如何实现?

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 等于 An ExceptionDetail,可能由 IncludeExceptionDetailInFaults=true 创建,其值为:System.IdentityModel.Tokens.SecurityTokenValidationException:安全令牌身份验证器 'System.ServiceModel.Security.Tokens.GenericXmlSecurityTokenAuthenticator' 无法验证类型为 ' System.IdentityModel.Tokens.SamlSecurityToken'。

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

4

0 回答 0