【问题标题】:ID3242: The security token could not be authenticated or authorizedID3242:无法对安全令牌进行身份验证或授权
【发布时间】:2016-05-17 08:31:56
【问题描述】:

目前我正在处理一个项目,我的应用程序必须使用 ADFS 验证才能登录。

我找到了一些从 ADFS 获取令牌的代码,但它一直给我上面的错误,而没有任何关于错误的良好描述。

这是我使用的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;
using System.ServiceModel.Security;
using System.Net;
using System.IdentityModel.Protocols.WSTrust;
using System.IdentityModel.Tokens;

namespace ADFS_token_test_3
{
    class Program
    {
    static void Main(string[] args)
    {
        go();
    }

    static public EndpointAddress ep;
    static public WSTrustChannelFactory factory;

    public static string go()
    {
        WS2007HttpBinding binding = new WS2007HttpBinding(SecurityMode.TransportWithMessageCredential);
        binding.Security.Message.EstablishSecurityContext = false;
        binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;

        binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
        ep = new EndpointAddress("https://companyname.nl/adfs/services/trust/13/usernamemixed");

        factory = new WSTrustChannelFactory(binding, ep);
        factory.TrustVersion = TrustVersion.WSTrust13;

        factory.Credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
        factory.Credentials.UserName.UserName = "username";
        factory.Credentials.UserName.Password = "password";

        var rst = new RequestSecurityToken
        {
            RequestType = RequestTypes.Issue,
            AppliesTo = new EndpointReference("https://companyname.nl/adfs/services/trust/13/usernamemixedr"),
            KeyType = KeyTypes.Bearer,
        };

        IWSTrustChannelContract channel = factory.CreateChannel();
        // Error line 
        GenericXmlSecurityToken genericToken = channel.Issue(rst)
         as GenericXmlSecurityToken;

        return genericToken.TokenXml.InnerXml.ToString();
    }
  }
}

错误出现在带有错误注释的行。

有人知道吗?

【问题讨论】:

    标签: c# adfs adfs2.0 adfs3.0 ws-trust


    【解决方案1】:

    检查您的 CRL 分发点是否可以到达。

    我在一些 ADFS Single SignOn Web 应用程序中遇到过这个问题。 ADFS 使用 PKI 证书(例如用于签署令牌)。这些证书通常具有必须可访问的 CRL(证书吊销列表)。如果无法检查吊销列表,您往往会收到上述错误消息。 对我来说,它是位于我的应用程序和 CDP(CRL 分发点)服务器之间的防火墙。

    PS。您可以在查看证书本身的详细信息时验证 CDP。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-02
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 2013-02-12
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多