gpt4 book ai didi

spring-boot - Spring Security Oauth2 客户端是否自动处理来自 Spring 授权服务器的刷新 token ?

转载 作者:行者123 更新时间:2023-12-05 04:28:50 24 4
gpt4 key购买 nike

我正在尝试使用 NextJS + Java 创建一个应用程序,并将 Spring 作为我的后端,并且我一直在尝试使用新的 Spring 授权服务器以及带有 Spring Gateway 和 Spring Security Oauth2 客户端的 BFF 应用程序。

最近在研究这个sample尝试为我自己的应用程序实现前端后端模式,我遇到了一些关于 Spring Security Oauth2 客户端的问题。

  1. 我已阅读 this看起来它确实自动处理了授权代码、刷新 token 、客户端凭据,如下面的代码所示,但我的问题是它是否真的通过它自己专门刷新 token 等来处理所有事情,我读过关于它,但这是我第一次接触 Oauth2 Client,我想确定一下,否则我是否完全迷路了。

    @Bean
    @Primary // Needed because of GatewayReactiveOAuth2AutoConfiguration
    public ReactiveOAuth2AuthorizedClientManager authorizedClientManager(
    ReactiveClientRegistrationRepository clientRegistrationRepository,
    ServerOAuth2AuthorizedClientRepository authorizedClientRepository) {

    ReactiveOAuth2AuthorizedClientProvider authorizedClientProvider =
    ReactiveOAuth2AuthorizedClientProviderBuilder.builder()
    .authorizationCode()
    .refreshToken()
    .clientCredentials()
    .build();

    DefaultReactiveOAuth2AuthorizedClientManager authorizedClientManager =
    new DefaultReactiveOAuth2AuthorizedClientManager(
    clientRegistrationRepository, authorizedClientRepository);
    authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);

    return authorizedClientManager;

  2. 第二个问题是,既然 Spring Authorization Server 保存了 RegisteredClient、Authorization 和 AuthorizationConsent,Backend For Frontend 应用程序是否应该以某种方式将 token 存储在数据库中?我从上面的代码中看到了这些存储库,但我不知道是否需要实现和保存。如果我必须使用 BFF 或 Auth 服务器启动多个 pod,以及在处理多个 BFF 实例时如何正确处理我的前端和 BFF 之间的 session ,我对它在生产环境中的工作方式感到困惑。

最佳答案

一般来说,您会想分别提出每个问题。标题表明您专注于刷新 token ,但您添加了第二个关于持久性的问题。话虽如此,我认为答案很简单,所以我们可以试一试。

#1:

在某种程度上,通过试用示例很容易回答这个问题。这很容易跳过,但这是重要的一步。示例存储库包括一个网关/bff、一个 JavaScript 客户端(角度)、一个资源服务器和一个授权服务器,因此您可以运行所有这些并进行尝试。不过它还不是完全最新的,所以现在我建议先按原样运行它。

但简短的回答是肯定的,Spring Security OAuth2 客户端处理刷新 token 。

repo 中演示了多种可用模式(检查提交),但最简单的是使用 spring cloud gateway 中的 TokenRelay 开始。查看webinar有关该示例的更多上下文。

#2:

持久性是一个微妙的主题,因为它通常取决于您的环境以及您的组织可用或需要的数据库或持久性。开始时(听起来像你)可以忽略持久性,直到你学到足够的知识以适应其他复杂的主题,如 OAuth、Spring Security、体系结构等。

当然,如果您正准备投入生产,那绝对是时候考虑一​​下了。在那种情况下,是的,bff 应该有一个支持数据存储。您需要查看 core components文档的一部分,着重于 ServerOAuth2AuthorizedClientRepository 接口(interface)。您将实现它以在您的数据库中为 bff 存储和检索授权客户端。

希望这能回答问题,因为您指出了一些普遍的困惑,而且我不确定问题可能是什么。随着你了解更多,你会想针对每个点提出单独的问题。

关于spring-boot - Spring Security Oauth2 客户端是否自动处理来自 Spring 授权服务器的刷新 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72502327/

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