Spring Security SAML-未显示原则属性
我已经部署了SAML示例应用程序。我还注册了SSOCIRCE,能够正确登录 在经过身份验证的页面上,主体的SAML属性没有显示任何内容。在这里,我期待的名字,姓氏等 此外,对于名字、原则、姓名id等每一项内容,都会显示我的电子邮件地址,我希望其中一个是我的用户idSpring Security SAML-未显示原则属性,spring,saml,userid,Spring,Saml,Userid,我已经部署了SAML示例应用程序。我还注册了SSOCIRCE,能够正确登录 在经过身份验证的页面上,主体的SAML属性没有显示任何内容。在这里,我期待的名字,姓氏等 此外,对于名字、原则、姓名id等每一项内容,都会显示我的电子邮件地址,我希望其中一个是我的用户id Name: om.singh@XXXX.com Principal: om.sXX@XXXX.com Name ID: om.sXX@XXXX.com 任何建议,因为我需要获得名字、姓氏和用户id 问候 Om您可以尝试以
Name: om.singh@XXXX.com
Principal: om.sXX@XXXX.com
Name ID: om.sXX@XXXX.com
任何建议,因为我需要获得名字、姓氏和用户id
问候
Om您可以尝试以下代码:
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");
}
如果要检查身份验证断言中返回的属性,在SAMLUserDetailsService的实现中,可以执行以下操作:
@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));
}
...
...
}
@覆盖
公共对象loadUserBySAML(SAMLCredential SAMLCredential)引发UsernameNotFoundException{
字符串userID=samlCredential.getNameID().getValue();
for(属性attr:samlCredential.getAttributes()){
字符串[]attrVals=samlCredential.getAttributeAsStringArray(attr.getName());
列表值=新的ArrayList(Arrays.asList(attrVals));
LOG.info(String.format(“%s(%s):%s”、attr.getName()、attr.getFriendlyName()、values));
}
...
...
}
好吧,也许这不是提取细节的最佳方式,但你已经明白了