我有一个AD FS索赔提供商和一个Shibboleth SP成功进行身份validation。 当我login到受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日志里没有提到类似于上面关于姓氏或sn的输出,这使我相信“变换SN”规则写得不正确。
更新信息:
我可以通过改变规则1从手动inputsn到select下拉选项surname从而得到姓氏的工作。 我需要做些什么来获得其他广告领域没有下拉select工作?
我正在添加诸如streetAddress字段。 对于规则1,我手动input了LDAP属性和传出声明types的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是否正确,但值不是映射。
如何获取无法从下拉列表中select的LDAP属性?
编辑2:
我忘了添加select查看规则语言的结果(按照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 ,而所有其他值都有一个架构给他们。 由于没有模式,它将不会匹配streetaddress的转换规则,因为if语句正在查找http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress 。 我应该怎么做,不从下拉select中select的值?
我想到了:
我将变换规则更改为以下内容:
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的内容。 然后你就会知道configuration错误在哪一边。
编辑:在屏幕#1的窗口底部,当你点击“查看规则语言”button时,你看到了什么? 您是否在右侧的“传出声明types”框中手动input“sn”?
编辑2:您在框中键入的内容正是用作声明types的内容。 如果您input“foo”,那么您的声明types是“foo”。 如果你想要“ http:// foo ”,那么你必须input“ http:// foo ”。 如果您需要较长的声明types,而不是在框中input所有内容,请创build一个新的声明说明(导航左侧的树“AD FS” – >“服务” – >“声明说明”)。 这在下拉菜单中创build了一个新选项,使用起来更简单。