从ADFS查询中的用户返回角色子集

时间:2017-01-27 14:59:26

标签: active-directory ldap adfs

所以我有类似我想要添加的以下LDAP查询和ADFS自定义声明规则。

(=的memberOf CN = Parent_group,OU = Child_group1,OU = Child_group1,DC =发展)

Parent_group包含我感兴趣的所有组(Child_group1,Child_group2),子组拥有我想要的角色。

我当前的ADFS规则返回尝试登录的用户下的所有角色

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
 => add(store = "Active Directory", types = ("http://schemas.microsoft.com/ws/2008/06/identity/claims/role"), query = ";tokenGroups;{0}", param = c.Value);

我可以将这些组合起来只提供用户拥有的角色子集吗?

编辑: 只是为了扩展下面的答案,这就是我最终的结果: 我使用了两个规则,一个用于获取专有名称,另一个用于使用专有名称来获取我想要的组

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => add(store = "Active Directory", types = ("http://schemas.com/identity/distinguishedName"), query = "; distinguishedName;{0}", param = c.Value);


c:[Type == "http://schemas.com/identity/distinguishedName"] && c2:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => add(store = "Active Directory", types = ("http://schemas.com/groups/"), query = "(&(memberOf=CN=Parent_group,OU=Child_groups1,OU=Child_groups2,DC=domain,DC=company,DC=ROOT)(member={0}));CN;{1}", param = c.Value, param = c2.Value);

{0}使用专有名称将查询减少到仅与用户相关的组。 {1}使用Windows帐户名称,因此我不必对域/用户进行硬编码。

1 个答案:

答案 0 :(得分:1)

您需要一个自定义规则,例如:

c:[Type ==" http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",Issuer ==" AD AUTHORITY"] =>问题(商店=" Active Directory",types =(" http://company.com/claim"),query ="(&(objectClass = user)(memberof = CN) = Parent_group,OU = Child_group1,OU = Child_group1,DC = Development)); mail; domain \ user",param = c.Value);

<强>更新

查询格式为herehere

不 - 您可以删除&#34;&amp;(objectClass = user)&#34;如果你愿意的话。

&#34;域\用户&#34;根据文章是必需的。唯一重要的部分是域名。您可以为用户添加任何字符串。