Как войти в другой тип пользователей, используя Spring-Boot 2.0 и OAuth2 - PullRequest
1 голос
/ 06 апреля 2019

У меня есть разные типы пользователей, которых я хочу аутентифицировать на одном сервере авторизации. Каждый из них имеет таблицу базы данных и будет входить через другого клиента. Я хочу знать, из какой таблицы БД я должен искать их аутентификацию. Поэтому я пытаюсь получить clientID из запроса, но не могу. Вот что я попробовал:

    @Override
    public UserDetails loadUserByUsername(String login) throws UsernameNotFoundException {

        Authentication authentication =  SecurityContextHolder.getContext().getAuthentication();
        String clientID = ((OAuth2Authentication) authentication).getOAuth2Request().getClientId();


        if (clientID.equals("clientID1")){
            //look at the user table
        }
        else if (clientID.equals("clientID2")){
            //look at the company table
        }
        else
            throw new UsernameNotFoundException("ClientID " + clientID + " not found.");
    }

Часть кода выше компилируется нормально, но проблема возникает во время выполнения с исключением типа приведения типа:

{
    "error": "unauthorized",
    "error_description": "org.springframework.security.authentication.UsernamePasswordAuthenticationToken cannot be cast to org.springframework.security.oauth2.provider.OAuth2Authentication"
}

Итак, мои вопросы: как я могу получить clientID из запроса? Или есть другая стратегия, которую я могу использовать для аутентификации своих разных пользователей? Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...