2015-07-18 1 views
0

Я пытаюсь разработать проект Spring mvc с открытым идентификатором и входом в Google. Я использую конфигурацию java. И конфигурация XML являетсяopen id войдите в систему с google и spring mvc

<openid-login user-service-ref="openIdUserService" > 
    <attribute-exchange > 
<openid-attribute name="email" type="http://schema.openid.net/contact/email" required="true" /> 
    <openid-attribute name="firstName" type="http://axschema.org/namePerson/first" required="true" /> 
    <openid-attribute name="lastName" type="http://axschema.org/namePerson/last" required="true" /> 
</attribute-exchange> 

, но не мог понять, что соответствующий код конфигурации Java.

Любое предложение и пример кода для этого.

Я также использую весеннюю безопасность.

Вот провайдер:

 
public class OpenIdUserDetailsService implements UserDetailsService, AuthenticationUserDetailsService { 

    @Autowired 
    private CustomerRepository userRepository; 
    private static final List DEFAULT_AUTHORITIES = AuthorityUtils.createAuthorityList("ROLE_USER"); 

    @Override 
    public UserDetails loadUserByUsername(String id) throws UsernameNotFoundException { 
     Customer user = userRepository.findByOpenIdIdentifier(id); 

     if (user == null) { 
      throw new UsernameNotFoundException(id); 
     } 
     OpenIdUser openIdUser = new OpenIdUser(user.getOpenIdIdentifier(), DEFAULT_AUTHORITIES); 
     openIdUser.setName(user.getFirstname()); 

     return openIdUser; 
    } 

    @Override 
    public UserDetails loadUserDetails(OpenIDAuthenticationToken token) { 
     String id = token.getIdentityUrl(); 

     Customer user = userRepository.findByOpenIdIdentifier(id); 

     if (user != null) { 
      OpenIdUser openIdUser = new OpenIdUser(user.getOpenIdIdentifier(), DEFAULT_AUTHORITIES); 
      openIdUser.setName(user.getFirstname()); 

      return openIdUser; 
     } 

     String firstName = null; 
     String lastName = null; 
     String fullName = null; 

     List attributes = token.getAttributes(); 

     for (OpenIDAttribute attribute : attributes) { 
      String name = attribute.getName(); 

      if (name.equals("firstname")) { 
       firstName = attribute.getValues().get(0); 
      } else if (name.equals("lastname")) { 
       lastName = attribute.getValues().get(0); 
      } else if (name.equals("fullname")) { 
       fullName = attribute.getValues().get(0); 
      } 
     } 

     if (fullName == null) { 
      StringBuilder fullNameBldr = new StringBuilder(); 

      if (firstName != null) { 
       fullNameBldr.append(firstName); 
      } 
      if (lastName != null) { 
       fullNameBldr.append(" ").append(lastName); 
      } 

      fullName = fullNameBldr.toString(); 
     } 

     OpenIdUser openIdUser = new OpenIdUser(id, DEFAULT_AUTHORITIES); 
     openIdUser.setName(fullName); 
     openIdUser.setNewUser(true); 

     Customer u = new Customer(); 
     u.setOpenIdIdentifier(openIdUser.getUsername()); 
     u.setFirstname(openIdUser.getName()); 

     userRepository.save(u); 

     return openIdUser; 
    } 
} 

Спасибо за всю помощь.

ответ

1

Разработчик OpenIDLoginConfigurer построит OpenIDAuthenticationFilter и зарегистрирует фильтр в цепочке фильтров весенней безопасности.

OpenIDLoginConfigurer принимает атрибутные параметры для создания OpenIDAuthenticationFilter. Это параметры обратного вызова после аутентификации с помощью провайдера openid.

Для проверки подлинности с открытым идентификатором через весеннюю защиту запрошен url будет «/ j_spring_openid_security_check». OpenIDAuthenticationFilter обработает этот запрос, нажав на провайдер openid для аутентификации. Когда аутентификация завершена, пользователь openid будет сопоставлен с локальным пользователем.

Here - это простое примерное приложение, которое работает с открытым доступом с весной.

 Смежные вопросы

  • Нет связанных вопросов^_^