gpt4 book ai didi

spring - 如何从 Spring 授权服务器示例中获取刷新 token

转载 作者:行者123 更新时间:2023-12-05 02:28:59 25 4
gpt4 key购买 nike

官方示例 Spring Authorization Server 默认为带有 PKCE 的 Oauth 2.1 返回一个 access_tokenid_token

https://github.com/spring-projects/spring-authorization-server/tree/main/samples/default-authorizationserver

是否有可能端点 /oauth2/token 在响应中也返回一个 refresh_token?我需要在示例中进行哪些更改或配置才能获得 refresh_token

这是对 token 的 postman 请求 enter image description here

我还将提到我必须为使用 PKCE 的代码流所做的一些更改

禁用 CSRF

http
.authorizeRequests(authorizeRequests ->
authorizeRequests.anyRequest().authenticated()
)
.formLogin(withDefaults())
.csrf().disable();

将 ClientAuthenticationMethod.CLIENT_SECRET_BASIC 更改为 ClientAuthenticationMethod.NONE

将 requireAuthorizationConsent(true) 更改为 requireProofKey(true)

最佳答案

您提到将授权代码流与 PKCE 结合使用,这对 secret 客户端和公共(public)客户端均有效。但是,当使用公共(public)客户端(客户端身份验证方法 = 无,无客户端密码)时,不会颁发刷新 token 。

来自 #297基于浏览器的应用程序 (SPA) 的实现指南:

Refresh Tokens for Public Clients

There are no plans to implement refresh tokens for Public Clients, as there are no browser APIs that allow refresh tokens to be stored in a secure way, which would result in an increased attack surface.

有关刷新 token 的更多信息,请参阅#297,它主要基于来自 OAuth 2.0 for Browser-Based Apps 的建议。和 OAuth 2.0 Security Best Current Practice .使用公共(public)客户端时的建议是使用 "backend for frontend"图案。 BFF 将是一个保密的客户端,可以接收刷新 token ,同时还消除了在浏览器中管理和存储 token 的复杂性和风险。

关于spring - 如何从 Spring 授权服务器示例中获取刷新 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72390216/

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