考虑以下示例场景:
- 我有一个用于生产、测试和开发的单一 Active Directory 域(每个域在 OU 级别分开)。
- 我想在测试 OU 级别安装 ADFS,并且我不希望在测试 OU ADFS 中经过身份验证的用户能够访问(读取和写入)其他 OU。
这可能吗?我们能否限制 ADFS 2.0 仅在特定 OU 下工作?
虽然限制 ADFS 2.0 在特定 OU 下工作是不可行的(根据我阅读的资源和恕我直言),但我们可以限制特定 OU 内的用户访问。
这可以分两步完成:
添加声明规则以提取 AD 对象 DN。
• 要提取此声明,请从 ADFS 管理控制台转到 ADFS 2.0 -> 信任关系 -> 声明提供者信任 -> 单击 Active Directory -> 编辑声明规则。
• 在接受转换规则下,添加新规则
Claim rule name – DN (can be anything)
LDAP Attribute – distinguishedname
Outgoing claim type – http://temp.org/claims/DistinguishedName
• 这将提取 AD 中每个对象的 DN
添加新的授权规则(在所需应用程序的信赖方信任中)以允许来自特定 OU 的用户访问应用程序。
• 转到 ADFS 管理控制台 -> 信任关系 -> 信赖方信任 -> 选择应用程序 -> 编辑声明规则
• 在颁发授权规则(第二个选项卡)下,删除现有规则“允许所有用户”(如果有)并在 - 使用自定义规则发送声明下添加新规则:名称:XXX(任何值)
Custome rule:
c:[Type == "http://temp.org/claims/DistinguishedName", Value =~"^.* (OU=EMPLOYEES,OU=Org-Users,DC=ADCORP,DC=LAB)$"] => issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "PermitUsersWithClaim");
例如:OU=Users,OU=EMPLOYEES,OU=Org-users,DC=ADCORP,DC=LAB 中的用户将有权访问
OU=Admins,OU=EMPLOYEES,OU=Org-Users,DC=ADCORP,DC=LAB 中的用户将有权访问
OU=Users,OU=CONTRACTORS,OU=Org-Users,DC=ADCORP,DC=LAB 中的用户将无权访问
是否有可能扭转限制?因此,除了一次只允许 1 个 OU 之外,您可以允许所有人吗?
所以字符串可能是
C:[Type == " http://temp.org/claims/DistinguishedName ", Value =~"^.* (OU=EMPLOYEES,OU=Org-Users,DC=ADCORP,DC=LAB)$"] = >问题(类型=“ http://schemas.microsoft.com/authorization/claims/deny ”,值=“PermitUsersWithClaim”);
这样,除员工 OU 之外的每个人都可以访问。