在Spring Security OpenID中,如何获取用户详细信息?(email,firstname,..)
除了!我想在java或jsp文件中获取这些文件,而不是xml文件。答案 0 :(得分:0)
您需要的是名为属性交换。这是OpenID的一项功能,允许从提供商交换用户注册数据(例如姓名,电子邮件......)。注意:支持的属性交换值列表因提供者而异。
假设你已经配置并运行了OpenID的Spring Security,启用Attribute Exchange非常简单。
<!--in your spring config -->
<openid-login ....>
<!-- here is sample config for getting email -->
<attribute-exchange>
<openid-attribute
name="email"
type="http://schema.openid.net/contact/email"
required="true"
/>
</attribute-exchange>
</openid-login>
Spring会将属性数据保存到OpenIDAuthenticationToken
。然后在你的* UserDetailsService
public UserDetails loadUserDetails(OpenIDAuthenticationToken token) {
...
List<OpenIDAttribute> attributes = token.getAttributes();
user.setEmail(getAttribute("email", attributes));
..
}
private String getAttribute(String attrName, List<OpenIDAttribute> attrs) {
//do work to parse for email attribute
}