У меня есть разные типы пользователей, которых я хочу аутентифицировать на одном сервере авторизации. Каждый из них имеет таблицу базы данных и будет входить через другого клиента. Я хочу знать, из какой таблицы БД я должен искать их аутентификацию. Поэтому я пытаюсь получить 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 из запроса? Или есть другая стратегия, которую я могу использовать для аутентификации своих разных пользователей? Любая помощь приветствуется.