考虑以下示例场景:
- 我有一个单一的活动目录域用于生产,测试和开发(每个在OU级别分开)。
- 我想在测试OU级别安装ADFS,我不希望在测试OU ADFS上经过认证的用户有权访问其他OU。
这可能吗?我们能否将ADFS 2.0限制为仅在特定OU下工作?
虽然限制ADFS 2.0在特定OU下工作是不可行的(从我阅读的资源和IMHO来看),但我们可以在特定OU内限制用户访问。
这可以通过两个步骤完成:
-
添加声明规则提取AD对象DN
•要从ADFS管理控制台提取此声明,请转到ADFS 2.0 ->信任关系->索赔提供者信任->单击活动目录->编辑索赔规则
•在验收转换中规则,添加新规则
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中的用户将无法访问
有关添加DN的详细信息,请参阅此链接,有关添加自定义规则的详细信息,请参阅msdn帖子
是否有可能扭转这些限制?与其每次只允许1个OU,还不如允许除1个OU外的所有OU ?
所以字符串可以是
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/deny", Value = "PermitUsersWithClaim");
这样除了Employees OU之外的所有OU都可以访问。