WSO2识别服务器可以在SAML响应的NameID中发回电子邮件地址吗?

时间:2015-03-03 22:43:37

标签: wso2 saml wso2is

我正在尝试使用云应用程序配置WSO2 Identity Server。

到目前为止,我已成功:

  1. 云应用程序被重定向到WSO2 IS并且它的登录页面出现了。
  2. WSO2 IS登录已成功通过LDAP支持的辅助用户存储进行身份验证。
  3. 然而,云应用登录仍然失败。我认为这是因为SAML响应具有用户名,云应用程序需要用户电子邮件地址而不是用户名。我这样说是因为您使用他们的电子邮件地址而不是用户名来配置云应用程序中的用户。

    无论如何你可以让WSO2 IS返回电子邮件地址而不是用户名。我附上SAML以说明我的意思,我希望我的电子邮件地址在<saml:NameID>字段中返回,而不是我的用户名smith

    <?xml version="1.0" encoding="UTF-8"?>
    <saml2p:Response Destination="https://cloudapp.com/auth/saml/callback"
                 ID="ijnccdceglphfggpnhhdkckhdkendndabahdjlef" InResponseTo="_4b740f60-a420-0132-eb44-002590a743aa"
                 IssueInstant="2015-03-03T22:12:25.000Z" Version="2.0"
                 xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol">
    <saml2:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity"
                  xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">localhost
    </saml2:Issuer>
    <saml2p:Status>
        <saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
    </saml2p:Status>
    <saml2:Assertion ID="kjggobfabnbnfnpbngjeeolfjjjoimapmkpadbfl" IssueInstant="2015-03-03T22:12:25.000Z" Version="2.0"
                     xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
        <saml2:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">localhost</saml2:Issuer>
        <saml2:Subject>
            <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">smith</saml2:NameID>
            <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
                <saml2:SubjectConfirmationData InResponseTo="_4b740f60-a420-0132-eb44-002590a743aa"
                                               NotOnOrAfter="2015-03-03T22:17:25.000Z"
                                               Recipient="https://cloudapp.com/auth/saml/callback"/>
            </saml2:SubjectConfirmation>
        </saml2:Subject>
        <saml2:Conditions NotBefore="2015-03-03T22:12:25.000Z" NotOnOrAfter="2015-03-03T22:17:25.000Z">
            <saml2:AudienceRestriction>
                <saml2:Audience>https://cloudapp.com/</saml2:Audience>
            </saml2:AudienceRestriction>
        </saml2:Conditions>
        <saml2:AuthnStatement AuthnInstant="2015-03-03T22:12:25.001Z">
            <saml2:AuthnContext>
                <saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml2:AuthnContextClassRef>
            </saml2:AuthnContext>
        </saml2:AuthnStatement>
    </saml2:Assertion>
    

1 个答案:

答案 0 :(得分:2)

是。您可以使用WSO2IS中的配置来完成此操作。默认情况下,WSO2IS返回经过身份验证的用户名。但您可以选择经过身份验证的用户的哪个属性,必须添加为NameID中的SAML2 Assertion。如果您使用的是IS 5.0.0,则在声明配置下,您可以找到名为Subject Claim URI:的配置。在这里,您可以选择必须选为NameID的所需声明uri。您可以在“{3}}”主题“SAML2断言的用户名”下找到更多配置详细信息。

但是,当您使用电子邮件时,如果发现任何问题,您可能需要在carbon.xml文件中配置以下元素。但是上面的链接包含了更多相关内容。

<EnableEmailUserName>true</EnableEmailUserName>