我设置了一个 AD FS 声明提供程序,并且一个 Shibboleth SP 成功地对其进行了身份验证。
我正在尝试将 Active Directory 属性发送到 SP。
我按照这篇文章尝试发送声明: https ://technet.microsoft.com/en-us/library/gg317734(v=ws.10).aspx
相关部分是Step 2: Configure AD FS 2.0 as the Identity Provider and Shibboleth as the Relying Party
--> Configure AD FS 2.0
--> Edit Claim Rules for Relying Party Trust
--> To configure eduPerson claims for sending to a relying party trust
:
在第 16 步中,它声明我应该粘贴或键入以下内容(并将其包含在 2 个代码块中):
c:[Type == "http://schemas.xmlsoap.org/claims/Group", Value == "Domain Users"]
和
=> issue(Type = "urn:oid:1.3.6.1.4.1.5923.1.1.1.9", Value = "[email protected]", Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/attributename"] = "urn:oasis:names:tc:SAML:2.0:attrname-format:uri");
我相信这是一个单一的陈述(如果我错了,请纠正我)所以我的条目如下:
我正在使用 givenName 进行测试,所以我添加了以下内容:
在 Shibboleth SP 机器上,我attribute-map.xml
通过添加以下内容进行了编辑,然后重新启动了 Shibboleth 服务:
<Attribute name="urn:mace:dir:attribute-def:GivenName" id="GivenName"/>
当我浏览该网站并使用 AD FS 重新进行身份验证时,我没有看到 givenName 显示。我有一个输出所有标题及其值的索引文件。
编辑:我的问题的解决方案
我让 UPN 作为 epPN 发送。上述规则(文章中的规则)有效,但我必须attribute-policy.xml
在 Shibboleth SP 上编辑以禁用范围规则,因为我没有正确设置该部分。
我在attribute-policy.xml
afp:AttributeRule attributeID="eppn">
<afp:PermitValueRuleReference ref="ScopingRules"/>
</afp:AttributeRule>
是的,索赔规则(显示为两行)是一个“声明”。它以';'结尾。即,您将两行都添加到相同的自定义规则中。
对于每个带有对象标识符 uri 的已发布(发送)声明(属性),您需要添加自定义规则(在 AD 搜索规则下方)。也就是说,如果您想要“urn:oasis:names:tc:SAML:2.0:attrname-format:uri”。如果你只想要 oid uri,那么在“Claim Descriptions”中定义 Clam 就足够了。
通常我会在程序上使用一些细微的变化。我使用 UI 编写搜索规则,然后将规则(从“查看规则语言”)复制到自定义规则。在复制的自定义规则中,我将“问题”更改为“添加”。然后我删除了原来的搜索规则。这避免了向 Shib 发送 URL 和 URN 声明。