У меня зарегистрировано несколько клиентов для моего сервера аутентификации oauth2.Я хочу получить полномочия пользователя на основе clientId.Допустим, ПОЛЬЗОВАТЕЛЬ-1 имеет полномочия ADMIN для КЛИЕНТА-1, а для КЛИЕНТА-2 ПОЛЬЗОВАТЕЛЬ-1 имеет полномочия ПОЛЬЗОВАТЕЛЯ.
Я пробовал эту проблему .Но я всегда получаю пустой запрос.
final HttpServletRequest request = ((ServletRequestAttributes)
RequestContextHolder.getRequestAttributes()).getRequest();
Я также добавил WebListner, но безуспешно.
@Configuration
@WebListener
public class MyRequestContextListener extends RequestContextListener {
}
@Service
public class DomainUserDetailsService implements UserDetailsService {
@Autowired
private UserRepository userRepository;
@Autowired
private AuthorityRepository authorityRepository;
@Override
@Transactional
public UserDetails loadUserByUsername(final String email) throws UsernameNotFoundException {
User user = userRepository.findUserByUserName(email);
if (user == null) {
new UsernameNotFoundException("Username not found");
}
String clientId = "?"; // How to get clientId here?
List<String> roles = authorityRepository.getUserAuthorities(email, clientId);
return new DomainUser(email, user.getCredential(), user.getId(), fillUserAuthorities(roles));
}
public Collection<SimpleGrantedAuthority> fillUserAuthorities(Collection<String> roles) {
Collection<SimpleGrantedAuthority> authorties = new ArrayList<SimpleGrantedAuthority>();
for (String role : roles) {
authorties.add(new SimpleGrantedAuthority(role.toUpperCase()));
}
return authorties;
}
}
Если я иду в неправильном направлении, любые предложенияприемлемый.