Я новичок в Spring Boot и Oauth, внедряю Oauth Security в свою систему, и у меня есть сомнения относительно запросов JdbcTokenStore.
Я видел DEFAULT_ACCESS_TOKEN_SELECT_STATEMENT = "select token_id, token from oauth_access_token where token_id =?"
в коде JdbcTokenStore.
Я попытался получить токен от oauth/token с client_id1 и проверил токен с client_id2, наконец, я получил успешный ответ, потому что он просто фильтрует token_id.
Я ожидал ошибку типа «токен не найден» или что-то подобное.
Должен ли этот запрос иметь такое поведение?
ОБНОВЛЕНИЕ
У меня AuthorizationServer и ResourceServer разделены, на моем AuthorizationServer я получаю ClientDetails из базы данных, и у меня есть две записи:
В моем веб-приложении я использую первый ClientDetails для получения действительного токена с помощью:
$ curl seiafiscalizacao:seiafiscalizacao123@localhost:8080/seia-auth-server/oauth/token -d grant_type=password -d username=username -d password=pwd
В oauth_access_token я получил новую запись, связывающую token_id с client_id:
На моем ResourceServer у меня есть RemoteTokenServices со следующими конфигурациями (второй ClientDetails):
@Bean
@Primary
public RemoteTokenServices tokenService() {
RemoteTokenServices tokenService = new RemoteTokenServices();
tokenService.setCheckTokenEndpointUrl("http://localhost:8080/seia-auth-server/oauth/check_token");
tokenService.setClientId("seiafiscalizacao2");
tokenService.setClientSecret("seiafiscalizacao123");
return tokenService;
}
Наконец, когда я пытаюсь получить какой-либо ресурс с моего ResourceServer, я получаю ответ об успехе, даже используя другой client_id:
Когда я открыл код JdbcTokenStore из org.springframework.security.oauth2.provider.token.store
, я увидел private static final String DEFAULT_ACCESS_TOKEN_SELECT_STATEMENT = "select token_id, token from oauth_access_token where token_id = ?";
и понял, почему я добился успеха.
Я не получаю никаких ошибок или исключений, но мне интересно проверить мой токен с другим client_id и добиться успеха.
Как я уже говорил, я новичок в Oauth и не знаю, ожидалось ли это.
Для доступа к ResourceServer я использую RESTClient из Firefox
Моя версия SpringBoot — 1.5.10.RELEASE
Мой сервер приложений — Wildfly 10.1
На данный момент мой проект очень сложен для публикации, но если вам нужно, я могу сделать новый с несколькими последними вещами.