Spring Security SAML - 未显示主要属性

时间:2015-07-21 12:05:32

标签: spring saml userid

我已经部署了SAML示例应用程序。我还在SSOCircle注册,并且能够正确登录。

在经过身份验证的页面上 - Principal的SAML属性不显示任何内容。在这里,我期待名字,姓氏等。

同样对于名称,原则,名称ID等所有内容 - 所有内容都显示我的电子邮件地址,我希望其中一个是我的用户ID。

Name:   om.singh@XXXX.com
Principal:  om.sXX@XXXX.com
Name ID:    om.sXX@XXXX.com

任何建议,因为我需要获取名字,姓氏和用户ID。

此致 嗡

2 个答案:

答案 0 :(得分:2)

您可以尝试以下代码:

    public Object loadUserBySAML(SAMLCredential credential) throws UsernameNotFoundException 
    {
        String userName = credential.getNameID().getValue();
        String email     = credential.getAttributeAsString("EmailAddress");
        String firstName = credential.getAttributeAsString("FirstName");
        String lastName  = credential.getAttributeAsString("LastName");
}

答案 1 :(得分:0)

如果要检查身份验证断言中返回的属性,可以在SAMLUserDetailsS​​ervice的实现中执行以下操作:

@Override
public Object loadUserBySAML(SAMLCredential samlCredential) throws UsernameNotFoundException {
    String userID = samlCredential.getNameID().getValue();
    for(Attribute attr : samlCredential.getAttributes()) {
        String[] attrVals = samlCredential.getAttributeAsStringArray(attr.getName());
        List<String> values = new ArrayList<>(Arrays.asList(attrVals));
        LOG.info(String.format("%s (%s) : %s", attr.getName(), attr.getFriendlyName(), values));
    }
    ...
    ...
}

好的,也许不是提取细节的最佳方法,但是您可以理解。