Я создаю Oauth-сервер, используя Spring с этим учебным пособием .
Во время реализации Resource Server я заметил, что конечная точка ключа токена (/ oauth / token_key) не была общедоступной.
На основе этого документа Я попытался добавить в AuthorizationServerConfigurerAdapter следующее:
security.tokenKeyAccess("permitAll()")
.checkTokenAccess("hasAuthority('ROLE_TRUSTED_CLIENT')");
, а также:
security.tokenKeyAccess("isAnonymous() || hasAuthority('ROLE_TRUSTED_CLIENT')")
.checkTokenAccess("hasAuthority('ROLE_TRUSTED_CLIENT')");
Обе конфигурации сделалине работал.Я также попытался добавить правило в свой WebSecurityAdapter:
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/oauth/token_key").permitAll();
}
Теперь я увижу диалоговое окно с запросом логина и пароля, и когда я нажму кнопку Отмена, я получу следующее:
There was an unexpected error (type=Unauthorized, status=401).
Unauthorized
org.springframework.security.access.AccessDeniedException: You need to authenticate to see a shared key
at org.springframework.security.oauth2.provider.endpoint.TokenKeyEndpoint.getKey(TokenKeyEndpoint.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
(...)
Я что-то упустил?