在Spring Security OpenID中,如何获取用户详细信息?

时间:2013-07-02 06:14:32

标签: spring-security openid

在Spring Security OpenID中,如何获取用户详细信息?(email,firstname,..)

除了!我想在java或jsp文件中获取这些文件,而不是xml文件。

1 个答案:

答案 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。然后在你的* UserDetailsS​​ervice

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
}