声明和角色
Claims and Roles
我正在将 MVC5 应用程序从表单身份验证迁移到联合身份验证。我正在使用 ADFS 来联合我的应用程序并且工作正常。我已经在 AD 中设置了组,并认为我何时会使用此代码:
if(ClaimsPrincipal.Current.IsInRole(@"MY-ROLE"))
如果 AD 用户实际上是 "MY-ROLE" 的成员,则 return 为真,但事实并非如此。我在这里错过了什么吗? (我是联邦服务的新手,如果我遗漏了一些明显的东西,请原谅我)
您需要添加将组映射到角色的声明规则。
发送 LDAP 属性作为声明。
使用"Token Groups - Unqualified Names"并映射到角色
即规则语言为:
c:[类型 == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", 颁发者 == "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。
我正在将 MVC5 应用程序从表单身份验证迁移到联合身份验证。我正在使用 ADFS 来联合我的应用程序并且工作正常。我已经在 AD 中设置了组,并认为我何时会使用此代码:
if(ClaimsPrincipal.Current.IsInRole(@"MY-ROLE"))
如果 AD 用户实际上是 "MY-ROLE" 的成员,则 return 为真,但事实并非如此。我在这里错过了什么吗? (我是联邦服务的新手,如果我遗漏了一些明显的东西,请原谅我)
您需要添加将组映射到角色的声明规则。
发送 LDAP 属性作为声明。
使用"Token Groups - Unqualified Names"并映射到角色
即规则语言为:
c:[类型 == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", 颁发者 == "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。