从 SAMLResponse 检索用户名和详细信息

Retrieving username and details form SAMLResponse

我正在使用 ssocircle 作为我的 IDP。 如何在响应中获取用户名,任何代码示例都会有所帮助。 我的 saml 请求如下。

<saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
                     AssertionConsumerServiceURL="http://localhost:38080/ICDWeb/saml/SSO"
                     Destination="https://idp.ssocircle.com:443/sso/SSORedirect/metaAlias/ssocircle"
                     ForceAuthn="false"
                     ID="a3h6ehei2fjhghi3240a10e2ad03ifj"
                     IsPassive="false"
                     IssueInstant="2015-03-27T06:12:49.597Z"
                     ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
                     Version="2.0"
                     >
    <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">http://172.16.246.146:38080:ICDWeb/saml/metadata</saml2:Issuer>
</saml2p:AuthnRequest>

您需要配置您的 IDP 以发送您需要的属性。

在 SP 端,您可以从 SecurityContextHolder.getContext().getAuthentication().getCredentials() 中可用的 SAMLCredential 对象加载 IDP 发送的属性。打电话给例如credential.getAttributeAsString("myAttribute") 将 return IDP 发送的值。 IDP 发送的 NameID 值可用作 SecurityContextHolder.getContext().getAuthentication().getPrincipal() 中的主体。