gpt4 book ai didi

spring-boot - 带 Springboot 的 Azure Active Directory : how to handle expired oauth token?

转载 作者:行者123 更新时间:2023-12-05 06:30:38 26 4
gpt4 key购买 nike

我有一个 springboot 应用程序,它使用 Microsoft Azure 事件目录来允许身份验证 (oauth2)。

我遵循了 Microsoft (https://learn.microsoft.com/en-us/java/azure/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory?view=azure-java-stable) 提供的“操作方法”。

除了我不知道如何以不会影响用户的方式处理过期 token (1 小时后)外,一切都运行良好。

我知道可以使用刷新 token 获取新 token ,但如果我查看 NimbusAuthorizationCodeTokenResponseClient.java,即使刷新 token 可用,也不会保存在任何地方。

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

有人可以使用这个 Azure Active directory spring boot 模块吗?

我正在使用 Springboot 2.0.4azure spring boot 模块 2.0.5

最佳答案

您的 access_token 会被 refresh_token 自动刷新。

但是当您的 refresh_token token 过期时,您仍然会遇到同样的错误。要处理它,您可以让您的 refresh_token 在您获得新的 access_token 的同时自动更新。在 auth-server 代码的 AuthorizationServerEndpointsConfigurer 配置中使用 reuseRefreshTokens(false):

看一下 DefaultTokenServices 类中的 refreshAccessToken 方法:

   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);
}
}

关于spring-boot - 带 Springboot 的 Azure Active Directory : how to handle expired oauth token?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52184654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com