自定义索赔规则

Custom claim rules

我是 ADFS 声明规则的新手,正在为自定义规则苦苦挣扎。

我想做的是根据组名过滤组,然后return匹配的组作为 SID。我还想 return UPN、电子邮件、姓氏、GivenName 和 WindowsAccountName 以及这些,但过滤组最重要。

我已经试过了,但没有成功:

c:[Type == "http://schemas.xmlsoap.org/claims/Group", Value =~ "(?i).+(Test|Test2).+"]
=> issue(Type = "https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid");

任何人都可以帮助我创建此规则或为我指明正确的方向吗?如果您费心的话,我也很感激对规则的解释。

您首先需要一个规则来创建组。

所以在向导中,设置一个 LDAP 规则。

在 LHS 上,选择“令牌组 - 不合格名称”。

在 RHS 上,选择“http://schemas.xmlsoap.org/claims/Group”。

你现在可以运行正则表达式了。

c:[类型 == "http://schemas.xmlsoap.org/claims/Group", 值 =~ "(?i).+(Test|Test2).+"] =>问题(类型=“https://schemas.microsoft。com/ws/2008/06/identity/claims/groupsid”,值=c.value);

规则所说的是采用“http://schemas.xmlsoap.org/claims/Group”类型的所有声明,运行 正则表达式,如果为真,则创建一个 groupsid 声明集团索赔的价值。

请注意,如果有多个组与正则表达式匹配,您将获得多个 groupsid 类型的声明。

此外,请在此处查找 reference

这为用户提供了我想要的参数,根据名称过滤组,returns 组作为非限定名称和 SID

获取群组:

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

过滤器和问题组:

c1:[Type == "http://schemas.xmlsoap.org/claims/Group", Value =~ "INSERT-REGEX-HERE"]
 && c2:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
 => issue(store = "Active Directory", types = ("https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", "http://schemas.xmlsoap.org/claims/Group"), query = "(&(name={0}));objectSid,name;{1}", param = c1.Value, param = c2.Value);

发布用户参数:

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
 => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn", "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"), query = ";givenName,sn,mail,userPrincipalName,sAMAccountName;{0}", param = c.Value);