我试图让ADFS使用ASP.NET 4.5.2和多个域。只要ADFS服务器转换来自" upn" to" 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的文档不一致。我在这里缺少什么?
答案 0 :(得分:0)
问题在于,在我们的测试环境中,ADFS配置为返回SAML 2.0令牌和生产SAML 1.1令牌。所以Saml2SecurityTokenHandler的配置甚至没有解雇。
我尝试配置SamlSecurityTokenHandler并且转换成功后发现了这个问题。