【问题标题】:ADFS with ASP.NET 4.5 and WIF Override NameClaimTypeADFS 与 ASP.NET 4.5 和 WIF 覆盖 NameClaimType
【发布时间】:2016-03-14 00:14:56
【问题描述】:

我正在尝试让 ADFS 与 ASP.NET 4.5.2 和多个域一起工作。只要 ADFS 服务器将声明从“upn”转换为“name”,一切正常。但是,对于多个 AD 林,这是不可能的,因此我必须在 Web 服务器上执行转换。应该使用这个 Web.Config 条目来强制转换。

<securityTokenHandlers>
    <add type="System.IdentityModel.Tokens.Saml2SecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <samlSecurityTokenRequirement>
        <nameClaimType value="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" />
      </samlSecurityTokenRequirement>
    </add>
  </securityTokenHandlers>

当我调试时,我发现 Thread.CurrentPrincipal.Identity.NameClaimType 仍然设置为默认的http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name

如果我可以在 C# 中确定正在使用的活动 SecurityTokenHandler 将会很有用。

ADFS 的文档不一致。我在这里错过了什么?

【问题讨论】:

  • 我会捕捉事件并了解更多细节。参考msdn.microsoft.com/en-us/library/…
  • 您可以拥有一个本地声明身份验证管理器,该管理器在令牌解析时触发,然后您可以根据需要重写声明一次。
  • 该文档引用了完全不同的 .NET 3.5。

标签: asp.net adfs asp.net-4.5 adfs2.0 federated-identity


【解决方案1】:

问题在于,在我们的测试环境中,ADFS 被配置为返回 SAML 2.0 令牌,而在生产环境中则为 SAML 1.1 令牌。所以 Saml2SecurityTokenHandler 的配置甚至没有触发。

我通过尝试配置 SamlSecurityTokenHandler 发现了这个问题,并且转换成功。

【讨论】:

    猜你喜欢
    • 2013-07-21
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    相关资源
    最近更新 更多