2013-07-02 2 views

답변

0

필요한 것은 Attribute Exchange입니다. 이것은 공급자로부터 사용자 등록 데이터 (예 : 이름, 전자 메일, ...)를 교환 할 수있는 OpenID의 기능입니다. 주 : 지원되는 속성 교환 치의리스트는, 프로 바이더마다 다릅니다.

OpenID가 구성되어 작동하는 스프링 보안이 있다고 가정하면, 속성 교환을 사용하는 것은 매우 간단합니다.

<!--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> 

봄은 속성 데이터를 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 
} 
+0

나는 이것을 알고 있습니다. 하지만 내가 사용하는 경우 한 사용자가 로그인을 요청할 때마다 공급자는 항상 사용자에게 정보에 액세스하도록 요청합니다. 나는 처음으로 정보를 얻고 싶다 - 사용자는 내 사이트에 로그인한다. – user2524179

+0

원하는 것을 반영하도록 질문을 업데이트하십시오! 당신은 사용자 세부 정보를 얻는 방법을 물었습니다 - 이제 당신은 당신이 이미 이것을 알고 있다고 말하고 있습니다. – ikumen

관련 문제