Я закодировал интеграцию моей web application с помощью пружинной безопасности с pac4j и CAS, основанную на spring-security-pac4j-demo со следующими зависимостями:Как включить @Secured аннотации на моих контроллерах с помощью пружинной безопасности-pac4j 2,0
compile "org.pac4j:pac4j-core:1.8.8"
compile "org.pac4j:pac4j-cas:1.8.8"
compile "org.pac4j:spring-security-pac4j:1.4.3"
compile "org.springframework.security:spring-security-core:4.1.0.RELEASE"
Однако , когда я попытался обновиться до версии 2.0.0spring-security-pac4j Я понял, что подход был полностью изменен. Перед тем, как использовать для загрузки пользовательских ролей в моем заказном классе UserDetailService:
@Component("userDetailsService")
public class UserDetailsService implements AuthenticationUserDetailsService<ClientAuthenticationToken> {
private final Logger log = LoggerFactory.getLogger(UserDetailsService.class);
@Inject
private UserRepository userRepository;
@Override
@Transactional
public UserDetails loadUserDetails(ClientAuthenticationToken token) throws UsernameNotFoundException {
String username = token.getUserProfile().getId().toLowerCase();
log.debug("Authenticating {}", username);
Optional<User> userFromDatabase = userRepository.findOneByUsername(username);
if (!userFromDatabase.isPresent()) {
throw new UsernameNotFoundException("User " + username + " was not found in the database");
} else if (!userFromDatabase.get().getActivated()) {
throw new UserNotActivatedException("User " + username + " was not activated");
}
Collection<GrantedAuthority> grantedAuthorities = new ArrayList<>();
for (Authority authority : userFromDatabase.get().getAuthorities()) {
GrantedAuthority grantedAuthority = new SimpleGrantedAuthority(authority.getName());
grantedAuthorities.add(grantedAuthority);
}
return new org.springframework.security.core.userdetails.User(username,username, grantedAuthorities);
}
}
И с некоторыми дополнительными конфигурациями весны-безопасность работала, чтобы проверить роли пользователей доступа на моих контроллерах снабженных @Secured.
@Controller
@RequestMapping("/app/*")
public class SecureController {
@Secured("ROLE_ADMIN")
@RequestMapping("/secure/admins")
public String admins(Model model) {
model.addAttribute("roleName", "ROLE_ADMIN");
return "secure";
}
@Secured("ROLE_USER")
@RequestMapping("/secure/users")
public String users(Model model) {
model.addAttribute("roleName", "ROLE_USER");
return "secure";
}
}
С версии 2.0.0 из весны-безопасность-pac4j, даже не глядя в демосе я до сих пор я понятия не имею, с чего начать, чтобы сделать обновил свой проект с новой версией pac4j и сохраните его с помощью аннотации @Secured. Если кто-то может помочь с любыми советами и/или направлениями, мы будем очень благодарны.
Я попытался перенести проект в новую версию на основе образца и информацию, которую вы мне дали, но я получаю сообщение об ошибке при переадресации в браузере. Я могу что-то потерять, потому что в примере используется xml, и я использую аннотированный подход класса @Configuration. –
Можете ли вы опубликовать трассировку стека и подробную ошибку в списке рассылки: https://groups.google.com/forum/?fromgroups#!forum/pac4j-users? – jleleu
уверен, я собираюсь создать ветку на github, а также mak post post на форуме pac4-users. еще раз спасибо –