Безопасность Spring 3.0 - Авторизация с аутентификацией

Я новичок в Spring и мое требование состоит в том, что я не хочу аутентифицировать пользователя с помощью имени пользователя и пароля. Пользователь аутентифицирован - это какое-то другое приложение, и мое приложение получило запрос со следующей информацией:

  1. Имя пользователя
  2. Роли

Я просто хочу использовать Spring Security для защиты страниц в соответствии с ролями в запросе. Я подумал о написании UserDetailService, но это только добавляет данные запроса, Spring по-прежнему запрашивает информацию для аутентификации. Затем я подумал написать что-то вроде следующего:

public class UserLogin {

/*
@Resource(name = "userDetailsService")
private UserDetailsService userDetailsService;
*/

@Resource(name = "authenticationManager")
private AuthenticationManager authenticationManager;

public boolean login(UserEntity user) {

    //UserDetails ud = userDetailsService.loadUserByUsername(username);

    Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
    for (String role : user.getAuthorities()) {
        authorities.add(new GrantedAuthorityImpl(role));
    }

    UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword(), authorities);

    try {
        Authentication auth = authenticationManager.authenticate(token);

        SecurityContext securityContext = new SecurityContextImpl();

        // Places in ThredLocal for future retrieval
        SecurityContextHolder.setContext(securityContext);
        SecurityContextHolder.getContext().setAuthentication(auth);

    } catch (AuthenticationException e) {
        return false;
    }

    return true;
}
}

Я иду в правильном направлении. Если да, то как все это настроить .. в spring-xml.

6
задан Petro Semeniuk 1 May 2013 в 06:29
поделиться