AD FS - 将 AD 属性发送到 Shibboleth SP

AD FS - 将 AD 属性发送到 Shibboleth SP

我已设置 AD FS 声明提供程序,并且 Shibboleth SP 已成功通过其身份验证。当我登录受 Shibboleth 保护的站点时,索引会显示所有标头。我按预期接收 UPN,但无法获取要发送的其他属性,例如姓氏或 sAMAccountName。

我目前有 3 条声明规则: 索赔规则

规则1:

规则2:

规则 3:

从 Shibboleth SP 机器上的日志来看,sn 似乎并未作为 OID 属性发送。

如果我编辑 attribute-map.xml 并删除对 eppn 的引用,那么我会在 shibd 日志中得到以下内容:

2015-06-23 11:29:08 INFO Shibboleth.AttributeExtractor.XML [1]: skipping unmapped SAML 2.0 Attribute with Name: urn:oid:1.3.6.1.4.1.5923.1.1.1.6

shibd 日志中没有提到与上述输出类似的有关姓氏或 sn 的内容,这让我相信“转换 SN”规则写得不正确。


更新信息:

我能够通过将规则 1 从手动输入更改sn为选择下拉选项来使姓氏正常工作surname。我需要做什么才能使没有下拉列表可供选择的其他 AD 字段正常工作?

我正在添加诸如这样的字段streetAddress。对于规则 1,我已手动输入了 LDAP 属性的街道地址和传出声明类型。

然后我添加了一条附加规则:

c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress"]
 => issue(Type = "urn:oid:2.5.4.232", Value = c.Value, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/attributename"] = "urn:oasis:names:tc:SAML:2.0:attrname-format:uri");

我不知道是否http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress正确,但值没有映射。
如何让无法从下拉列表中选择的 LDAP 属性发挥作用?


编辑2:

我忘了添加选择查看规则语言的结果(如下面 Matthieu 的要求):

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/upn", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname", "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", "streetaddress"), query = ";userPrincipalName,sn,givenName,sAMAccountName,streetaddress;{0}", param = c.Value);

似乎它只获取了streetaddress,而所有其他值都有架构。由于没有架构,它将不符合 的转换规则,因为streetaddressif 语句正在寻找http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress。对于未从下拉列表中选择的值,我应该做什么?


我想到了:

我将转换规则更改为以下内容:

 c:[Type == "streetaddress"]
     => issue(Type = "urn:oid:2.5.4.232", Value = c.Value, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/attributename"] = "urn:oasis:names:tc:SAML:2.0:attrname-format:uri");

我没有寻找 Type == A 模式,而是直接输入了街道地址。然后在 Shibboleth SP 中,我更改了 Attribute-map.xml 以添加以下内容:

<Attribute name="urn:oid:2.5.4.232" id="streetaddress"/>

上面的 OID 是任意的。

答案1

要检查“转换 SN”规则是否按预期工作,请安装Fiddler.然后安装这位督察因此读取 SAML 消息更加容易。

使用这些工具,您将能够看到从 ADFS 服务器发送到 Shibboleth SP 的内容。然后您将知道哪一侧的配置有错误。

编辑:在屏幕 #1 的窗口底部,单击“查看规则语言”按钮时您会看到什么?您是否在右侧的“传出声明类型”框中手动输入了“sn”?

修改 2:您在框中输入的内容正是用作声明类型的内容。如果您输入“foo”,那么您的声明类型就是“foo”。如果您想要“http://foo“那么你必须输入”http://foo“。如果您需要较长的声明类型,则无需在框中输入所有内容,而是创建一个新的声明描述(导航左侧的树,“AD FS”->“服务”->“声明描述”)。这会在下拉列表中创建一个新选项,使用起来更简单。

相关内容