У меня есть приложение Spring Boot, которое использует два типа предоставления OAuth2:
- client_credentials
- Элемент списка
код авторизации
На самом деле я не нашел пример конфигурации Spring Security для настройки обоих grant_types.
То, что я на самом деле делаю, глупо:
public class CustomTokenServices implements ResourceServerTokenServices {
...
@Override
public OAuth2Authentication loadAuthentication(String accessToken) {
OAuth2Authentication authenticationAsUserInfo = null;
try {
authenticationAsUserInfo = loadAuthenticationAsUserInfo(accessToken);
} catch (Exception e) {
logger.warn(e.getMessage());
}
if (authenticationAsUserInfo == null) {
return loadAuthenticationAsRemote(accessToken);
}
return authenticationAsUserInfo;
}
...
}
Это решение if-else, которое на самом деле не является удобным решением: (