【问题标题】:Get token from ADFS从 ADFS 获取令牌
【发布时间】:2013-10-01 12:04:00
【问题描述】:

我正在尝试从 ADFS 获取一个令牌,以便我可以将它与本地 Windows 服务总线安装一起使用。我可能没有正确配置 ADFS,因为我收到以下消息:

MSIS3127:指定的请求失败。

获取token的代码如下:

    string adrecaSTS = "trust/13/usernamemixed";

    WS2007HttpBinding binding = new WS2007HttpBinding();

    binding.Security.Message.EstablishSecurityContext = false;
    binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
    binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
    binding.Security.Mode = SecurityMode.TransportWithMessageCredential; //https

    string baseSSLUri = @"https://<myadfs>/adfs/services/";



    WSTrustChannelFactory trustChannelFactory = new WSTrustChannelFactory(binding, new EndpointAddress(baseSSLUri + adrecaSTS));
    trustChannelFactory.TrustVersion = TrustVersion.WSTrust13;
    trustChannelFactory.Credentials.UserName.UserName = "username";
    trustChannelFactory.Credentials.UserName.Password = "password";

    WSTrustChannel tokenClient = (WSTrustChannel)trustChannelFactory.CreateChannel();

    //create a token issuance issuance
    RequestSecurityToken rst = new RequestSecurityToken(RequestTypes.Issue);

    //call ADFS STS
    SecurityToken token = tokenClient.Issue(rst);

端点在 ADFS 上启用,我的客户端(单独域上的笔记本电脑)信任来自 ADFS 的证书。

我是否需要建立某种信任或进一步的东西?此错误消息不是特别有用。

【问题讨论】:

    标签: wcf-security wif claims-based-identity adfs2.0 adfs


    【解决方案1】:

    我看到您解决了您的问题,但这里有一些额外的信息可能会帮助其他可能有相同错误消息但原因不同的人。

    AD FS 错误“MSIS3127...”可能有多种原因。对我们来说,这是由于我们的依赖方声明规则之一指定了不存在的 AD FS 属性存储。

    为了调试该错误,我们检查了所有运行 AD FS 的服务器上的事件查看器,我们在那里找到了指出属性存储问题的详细消息。因此,如果其他人收到相同的错误消息,那么我建议检查 AD FS 上的事件查看器以查看是否有其他日志。

    请注意,AD FS 记录到 Applications and Services Logs => AD FS => Admin 的文件夹/节点下的事件查看器

    【讨论】:

      【解决方案2】:

      看这里:

      https://github.com/thinktecture/Thinktecture.IdentityServer.v2/blob/master/src/Libraries/Thinktecture.IdentityServer.Protocols/WSFederation/HrdController.cs

      ValidateToken 方法包含大部分代码 - 但您首先需要从通用令牌中提取 InnerXml 并将其转换为 SAML 安全令牌(再次使用令牌处理程序)。

      【讨论】:

        【解决方案3】:

        发现问题。我试图以管理员帐户登录。当我使用普通用户时,它起作用了。

        我还必须修改 RequestSecurityToken 使其具有 KeyType.Symmetric 的 KeyType

        【讨论】:

        • 而且您还必须指定一个 ApplyTo。
        猜你喜欢
        • 2012-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-17
        • 1970-01-01
        • 1970-01-01
        • 2013-04-26
        • 1970-01-01
        相关资源
        最近更新 更多