首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Springboot的Azure Active Directory :如何处理过期的oauth令牌?

使用Springboot的Azure Active Directory :如何处理过期的oauth令牌?
EN

Stack Overflow用户
提问于 2018-09-05 20:01:50
回答 1查看 1.2K关注 0票数 2

我有一个使用Microsoft Azure active directory来允许身份验证(oauth2)的springboot应用程序。

我遵循了微软(https://docs.microsoft.com/en-us/java/azure/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory?view=azure-java-stable)提供的"how to“。

一切都很好,除了我不知道如何处理过期令牌(1小时后),它不会影响用户的方式。

我知道可以使用刷新令牌获得新的令牌,但是如果我查看一下NimbusAuthorizationCodeTokenResponseClient.java,刷新令牌不会保存在任何地方,即使它是可用的。

我找不到任何关于如何保留这个刷新令牌以及如何使用它的示例,比如它应该像整个过程一样自动工作。

有没有人对这个Azure活动目录spring启动模块有任何经验?

我在azure spring boot module 2.0.5中使用Springboot 2.0.4

EN

回答 1

Stack Overflow用户

发布于 2018-09-14 07:56:00

refresh_token会自动刷新您的access_token。

但是,当您的refresh_token令牌过期时,您仍然可以遇到相同的错误。为了处理这个问题,你可以让你的refresh_token在获得新access_token的同时自动续费。在身份验证服务器代码处的AuthorizationServerEndpointsConfigurer配置中使用reuseRefreshTokens(false):

看看DefaultTokenServices类中的refreshAccessToken方法:

代码语言:javascript
运行
复制
   public OAuth2AccessToken refreshAccessToken(String refreshTokenValue, 
                                                TokenRequest tokenRequest) {

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

您应该以某种方式将reuseRefreshToken标志设置为false。您可以在AuthorizationServerConfigurerAdapter实现中做到这一点:

代码语言:javascript
运行
复制
@Configuration
@EnableAuthorizationServer
public class AuthorizationServer extends AuthorizationServerConfigurerAdapter {
    // Other methods

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints
                .reuseRefreshTokens(false);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52184654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档