Я пытаюсь реализовать мой REST API, который является сервером ресурсов, используемым мобильными приложениями, в моем потоке OAuth2. У меня есть внешний сервер авторизации, созданный кем-то другим. В настоящее время я реализовал получение токена доступа в мобильном приложении (я полагаю, что клиент в потоке OAuth2?), И теперь, когда я делаю вызовы от клиента к серверу ресурсов (API REST), мне нужен сервер ресурсов для проверки токена из сервер авторизации, прежде чем завершить запрос для клиента. Я попытался найти различные учебные пособия по Spring-security-OAuth2, и мне удалось немного продолжить. Вот то, что я в настоящее время придумал:
@Configuration
@EnableResourceServer
public class SecurityConfig extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/**").authenticated();
}
@Primary
@Bean
public RemoteTokenServices tokenService() {
RemoteTokenServices tokenService = new RemoteTokenServices();
tokenService.setCheckTokenEndpointUrl(
end_point_url);
return tokenService;
}
}
В настоящее время сервер авторизации end_point_url
возвращает только http 200
, когда ему дан действительный токен в заголовках запроса как Authorization: Bearer VALID_TOKEN
. Прямо сейчас мои пути в REST API "защищены", но все, что требуется, это передать заголовок Authorization: Bearer
и вообще никакого токена или токена при выполнении запросов к моему REST API, и он считается как аутентифицированный. Я явно что-то упустил или не понял. Я думаю, что это не проверка токена вообще с сервера авторизации или ..? Я не знаю, честно. Есть идеи, что мне нужно делать?
UPDATE:
Как я прокомментировал ниже, я следил за журналами своих внешних серверов авторизации так же, как за журналами моих весенних отдыхающих приложений. Я обнаружил, что с этой конфигурацией, которую я представил здесь, приложение spring не извлекает / использует токен авторизации, который приходит от клиента (мобильного приложения) как Authorization: Bearer VALID_TOKEN
, а вместо этого выполняет вызов на сервер авторизации с заголовки типа Authorization: Basic SOME_RANDOM_TOKEN
. Почему он игнорирует и не использует токен с тегом Bearer
в мобильном приложении (клиенте)?