Есть шлюз в качестве клиента oauth2 и Сервер авторизации. Тип гранта authorization_code
. Все работает правильно. Uaa, шлюз и сервер ресурсов расположены здесь .
application.yml шлюза:
zuul:
routes:
resource:
url: http://localhost:8085
resource2:
url: http://localhost:8086
security:
oauth2:
resource:
user-info-uri: http://localhost:9191/uaa/user
client:
accessTokenUri: http://localhost:9191/uaa/oauth/token
userAuthorizationUri: http://localhost:9191/uaa/oauth/authorize
clientId: web
clientSecret: secret
grant-type: authorization_code,refresh_token
logging:
level:
org.springframework.security: DEBUG
Как вы видите в application.yml выше, в типе grant refresh_token
.
И конфиг Сервера авторизации:
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
//clients.jdbc(appConfig.dataSource());
clients.inMemory()
.withClient("web")
.secret(new HashingClass().encode("secret"))
.authorizedGrantTypes("authorization_code","refresh_token")
.scopes("read,write")
.accessTokenValiditySeconds(9)
.refreshTokenValiditySeconds(9);
}
Как вы видите в приведенном выше классе конфигурации, в авторизованном GrantTypes есть refresh_token
.
Но через 9 секунд токен обновления не работает, и в приложении Gateway возникает следующая ошибка:
Вызвано:
org.springframework.security.authentication.BadCredentialsException:
Не удается получить действительный токен доступа на
org.springframework.cloud.security.oauth2.proxy.OAuth2TokenRelayFilter.getAccessToken (OAuth2TokenRelayFilter.java:99)
~ [spring-cloud-security-2.0.0.RELEASE.jar: 2.0.0.RELEASE] в
org.springframework.cloud.security.oauth2.proxy.OAuth2TokenRelayFilter.run (OAuth2TokenRelayFilter.java:79)
~ [spring-cloud-security-2.0.0.RELEASE.jar: 2.0.0.RELEASE] в
com.netflix.zuul.ZuulFilter.runFilter (ZuulFilter.java:117)
~ [zuul-core-1.3.1.jar: 1.3.1] в
com.netflix.zuul.FilterProcessor.processZuulFilter (FilterProcessor.java:193)
~ [zuul-core-1.3.1.jar: 1.3.1] ... 97 общих кадров пропущено
Где не так? а какая-то еще конфигурация теряется для токена обновления?
Я, кроме как через 9 секунд, приложение Gateway автоматически получает новый токен по токену обновления. почему этого не происходит?