我设置了一个 AD FS 声明提供程序,并且一个 Shibboleth SP 成功地对其进行了身份验证。当我登录到受 Shibboleth 保护的站点时,索引会显示所有标题。我按预期收到了 UPN,但我无法获取要发送的其他属性,例如 surname 或 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 日志中没有提到与上述输出类似的 surname 或 sn,这让我认为“转换 SN”规则没有正确写入。
更新信息:
sn
通过将规则 1 从手动输入更改为选择下拉选项,我能够让姓氏起作用surname
。我需要做什么才能让其他没有下拉菜单的 AD 字段选择工作?
我正在添加诸如streetAddress
. 对于规则 1,我为 LDAP 属性和传出声明类型手动输入了 streetaddress。
然后我添加了一个附加规则:
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);
似乎它只是 get streetaddress
,而所有其他值都有一个模式。由于没有架构,它不会匹配 Transform 规则,streetaddress
因为 if 语句正在寻找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 是任意的。
要检查您的“转换 SN”规则是否按预期工作,请安装Fiddler。然后安装此检查器,以便更轻松地阅读 SAML 消息。
使用这些工具,您将能够查看从 ADFS 服务器发送到 Shibboleth SP 的内容。然后你就会知道配置错误在哪一侧。
编辑:在屏幕 #1 的窗口底部,单击“查看规则语言”按钮时会看到什么?您是否在右侧的“Outgoing Claim Type”框中手动输入了“sn”?
编辑 2:您在框中输入的内容正是用作声明类型的内容。如果您键入“foo”,则您的声明类型为“foo”。如果你想要“ http://foo ”,那么你必须输入“ http://foo ”。如果您需要长声明类型,而不是在框中键入所有内容,而是创建一个新的声明描述(导航左侧的树,“AD FS”->“服务”->“声明描述”)。这会在下拉列表中创建一个新选项,使用起来更简单。