我正在将MVC5应用程序从表单身份验证迁移到联合身份验证。我正在使用ADFS联合我的应用程序,这是正常的。我已经在AD中设置了组,并认为当我使用此代码时:
if(ClaimsPrincipal.Current.IsInRole(@"MY-ROLE"))
如果AD用户实际上是“MY-ROLE”的成员,则返回True,这似乎不是这种情况。我在这里遗漏了什么? (我是联邦服务的新手,如果我错过了一些明显的东西,请原谅我)
答案 0 :(得分:1)
您需要添加将群组映射到角色的声明规则。
将LDAP属性作为声明发送。
使用“令牌组 - 非限定名称”并映射到角色
即。规则语言将是:
c:[Type ==“http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname”,Issuer ==“AD AUTHORITY”] => issue(store =“Active Directory”,types =(“http://schemas.microsoft.com/ws/2008/06/identity/claims/role”),query =“; tokenGroups; {0}”,param = c.Value);
然后,应用程序端的WIF将映射到IsInRole。