如何从Spring Authorization Server示例中获取Refresh Token

z0qdvdin  于 2023-06-21  发布在  Spring
关注(0)|答案(1)|浏览(212)

官方示例Spring Authorization Server默认返回access_tokenid_token,用于带有PKCE的Oauth 2.1
https://github.com/spring-projects/spring-authorization-server/tree/main/samples/default-authorizationserver
端点**/oauth2/token是否也会在响应中返回refresh_token**?要获取refresh_token,需要对示例进行哪些更改或配置?
下面是对令牌x1c 0d1x的Postman请求
我还将提到我必须对PKCE的代码流进行的一些更改
禁用CSRF

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

将ClientAuthenticationMethod.CLIENT_SECRET_BASIC更改为ClientAuthenticationMethod.NONE
将requireAuthorizationConsent(true)更改为requireProofKey(true)

xqkwcwgp

xqkwcwgp1#

您提到使用PKCE的授权代码流,这对机密客户端和公共客户端都有效。但是,当使用公共客户端(客户端身份验证方法= none,无客户端机密)时,不会发出刷新令牌。
来自#297基于浏览器的应用程序(SPA)的实施指南:

公共客户端刷新令牌

没有计划为公共客户端实施刷新令牌,因为没有浏览器API允许以安全的方式存储刷新令牌,这将导致攻击面增加。
有关刷新令牌的更多信息,请参阅#297,它主要基于OAuth 2.0 for Browser-Based AppsOAuth 2.0 Security Best Current Practice的建议。在使用公共客户端时,建议使用"backend for frontend"模式。BFF将是一个机密客户端,可以接收刷新令牌,同时还消除了在浏览器中管理和存储令牌的复杂性和风险。

相关问题