我有一个 wcf 服务可以查询 ADFS 以获取 SAML token 。这是来自 Web 的常见代码段,用于查询 ADFS 并取回 SAML token 。
然而,它总是最终在 返回 channel 处中断。Issue(rst); .错误为 ID3082:请求范围无效或不受支持。
至少在高层次上,我无法确定错误是在 ADFS 服务器端还是与 WCF 服务的配置方式或代码有关。请帮忙。

public SecurityToken GetSamlToken()
{
    using (var factory = new WSTrustChannelFactory(
        new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential),
        new EndpointAddress(new Uri("https://serv/adfs/services/trust/13/usernamemixed"))))
    {
        factory.Credentials.UserName.UserName = "username";
        factory.Credentials.UserName.Password = "password";
        factory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
        factory.TrustVersion = TrustVersion.WSTrust13;
        WSTrustChannel channel = null;
        try
        {
            string KeyType;
            var rst = new RequestSecurityToken
            {
                RequestType = WSTrust13Constants.RequestTypes.Issue,
                AppliesTo = new EndpointAddress("net.tcp://localhost:xxxx/Service1/mex"),
                KeyType = Microsoft.IdentityModel.Protocols.WSTrust.WSTrust13Constants.KeyTypes.Bearer,
            };

            channel = (WSTrustChannel)factory.CreateChannel();

            return channel.Issue(rst);
        }
        finally
        {
            if (channel != null)
            {
                channel.Abort();
            }
            factory.Abort();
        }
    }
}

最佳答案

问题出在

AppliesTo = new EndpointAddress("net.tcp://localhost:xxxx/Service1/mex")

我用依赖方 uri 替换了它,它向我发出 token 。这里唯一的问题是令人困惑的错误消息。

关于c# - 使用 Windows 服务上托管的 WCF 对 ADFS 进行身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19400693/

10-13 05:22