【发布时间】: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