Azure Active Directory со Springboot: как обращаться с просроченным токеном oauth? - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть приложение springboot, которое использует Microsoft Azure активный каталог для проверки подлинности (oauth2).

Я следовал инструкциям Microsoft (https://docs.microsoft.com/en-us/java/azure/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory?view=azure-java-stable).

).

Все работает хорошо, за исключением того, что я понятия не имею, как обращаться с токеном с истекшим сроком действия (через 1 час) таким образом, чтобы он не влиял на пользователей.

Я знаю, что можно получить новый токен с токеном обновления, но если я посмотрю в NimbusAuthorizationCodeTokenResponseClient.java, токен обновления нигде не сохраняется, даже если он доступен.

Я не нашел примеров того, как сохранить этот токен обновления и как его использовать, например, должен ли он работать автоматически, как весь процесс.

Может ли кто-нибудь иметь опыт работы с этим весенним загрузочным модулем Azure Active Directory?

Я использую Springboot 2.0.4 с azure spring boot module 2.0.5

1 Ответ

0 голосов
/ 14 сентября 2018

Ваш access_token автоматически обновляется с помощью refresh_token.

Но когда ваш токен refresh_token истекает, вы все равно можете столкнуться с той же ошибкой. Чтобы справиться с этим, вы можете сделать так, чтобы ваш refresh_token автоматически обновлялся одновременно с получением нового access_token. Используйте reuseRefreshTokens (false) в конфигурации AuthorizationServerEndpointsConfigurer в коде сервера аутентификации:

Взгляните на метод refreshAccessToken в классе DefaultTokenServices:

   public OAuth2AccessToken refreshAccessToken(String refreshTokenValue, 
                                                TokenRequest tokenRequest) {

        // Omitted
        if (!reuseRefreshToken) {
            tokenStore.removeRefreshToken(refreshToken);
            refreshToken = createRefreshToken(authentication);
        }
        // Omitted
    }

Вы должны как-то установить флаг reuseRefreshToken в false. Вы можете сделать это в своей реализации AuthorizationServerConfigurerAdapter:

@Configuration
@EnableAuthorizationServer
public class AuthorizationServer extends AuthorizationServerConfigurerAdapter {
    // Other methods

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints
                .reuseRefreshTokens(false);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...