ADFS自定义声明规则电子邮件至LowerCase SAML响应

时间:2017-05-10 03:25:20

标签: saml adfs claims

我正在尝试在adfs中创建自定义声明规则,以便将电子邮件地址重写为NameId,但是以小写形式。

原因是Responsys读取声明并且在比较SAML响应中的NameId失败时区分大小写。我们的Active Directory的电子邮件地址为某些用户的大小写混合,而其他用户则为小写。例如LJeary @或ljeary @

我添加了一个自定义属性存储来执行小写部分,但我没有在SAMLResponse中看到声明。

根据http://macintheoffice.com/?q=node/5

我需要帮助才能创建自定义声明规则,该规则会在传出声明中将该电子邮件地址成功发送为小写IDID

应该看到这个

   <Subject>
        <NameID>ljeary@abc.com</NameID>
        <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
            <SubjectConfirmationData NotOnOrAfter="2017-05-10T03:24:20.358Z" Recipient="https://interact2.responsys.net/authentication/login/loginSSO" />
        </SubjectConfirmation>
    </Subject>

但请看这个

    <Subject>
        <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
            <SubjectConfirmationData NotOnOrAfter="2017-05-10T03:24:20.358Z" Recipient="https://interact2.responsys.net/authentication/login/loginSSO" />
        </SubjectConfirmation>
    </Subject>

缺少NameID属性。

使用的自定义声明规则是

    c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"]
 => issue(store = "StringProcessing", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"), query = "toLower", param = c.Value);

答案: 谢谢@nzpcmad。通过返回电子邮件地址并存储在传入的声明中,提出了类似的过程。然后创建另一个规则,将电子邮件传入声明转换为降低并分配给传出声明NameID。

ADFS Claim Rules

2 个答案:

答案 0 :(得分:1)

您确定自定义属性存储区正在返回某些内容吗?

错误可能是因为缺少NameID格式。

尝试返回虚假声明,例如http://company/temp包含小写电子邮件,然后使用转换规则将虚拟声明转换为NameID。

你也可以code this yourself

或者如果您喜欢typing: - )

答案 1 :(得分:0)

如@nzpcmad所建议,您可以通过发出临时声明,然后使用RegExReplace将其转换为小写来实现。尽管不雅致,但确实可以提供不需要在AD FS服务器上进行任何安装的解决方案。

UPN将自定义声明转换为小写的示例:

规则1:

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
 => add(store = "Active Directory", types = ("urn:temp_upn"), query = ";userPrincipalName;{0}", param = c.Value);

规则2:

c:[Type == "urn:temp_upn"]
 => issue(Type = "https://aws.amazon.com/SAML/Attributes/RoleSessionName", Value = RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(RegExReplace(c.Value, "A", "a"), "B", "b"), "C", "c"), "D", "d"), "E", "e"), "F", "f"), "G", "g"), "H", "h"), "I", "i"), "J", "j"), "K", "k"), "L", "l"), "M", "m"), "N", "n"), "O", "o"), "P", "p"), "Q", "q"), "R", "r"), "S", "s"), "T", "t"), "U", "u"), "V", "v"), "W", "w"), "X", "x"), "Y", "y"), "Z", "z"));