使用 Windows 服务上承载的 WCF 针对 ADFS 进行身份验证

本文关键字:ADFS 针对 身份验证 WCF 服务 Windows 使用 | 更新日期: 2023-09-27 18:35:31

我有一个wcf服务,用于查询ADFS以获取SAML令牌。这是来自 Web 的常见代码段,用于查询 ADFS 并取回 SAML 令牌。然而,它总是最终在线路返回通道处断开。问题(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();
        }
    }
}

使用 Windows 服务上承载的 WCF 针对 ADFS 进行身份验证

问题出在

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

将其替换为信赖方 uri,它向我颁发令牌。这里唯一的问题是令人困惑的错误消息。

此错误可能与 ADFS 终结点的配置有关。 以下文章似乎很好地概述了 ADFS Web 服务通信以及解决某些问题的步骤:

http://msinnovations.wordpress.com/2011/03/28/some-tips-on-active-federation-with-adfs-2-0/

为了获取有关错误发生位置(以及原因)的详细信息,您可能需要/需要配置 WCF 跟踪/日志记录。 以下链接提供了概述:

http://msdn.microsoft.com/en-us/library/ms733025.aspx

问候