官方示例Spring Authorization Server默认返回access_token和id_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)
1条答案
按热度按时间xqkwcwgp1#
您提到使用PKCE的授权代码流,这对机密客户端和公共客户端都有效。但是,当使用公共客户端(客户端身份验证方法= none,无客户端机密)时,不会发出刷新令牌。
来自#297基于浏览器的应用程序(SPA)的实施指南:
公共客户端刷新令牌
没有计划为公共客户端实施刷新令牌,因为没有浏览器API允许以安全的方式存储刷新令牌,这将导致攻击面增加。
有关刷新令牌的更多信息,请参阅#297,它主要基于OAuth 2.0 for Browser-Based Apps和OAuth 2.0 Security Best Current Practice的建议。在使用公共客户端时,建议使用"backend for frontend"模式。BFF将是一个机密客户端,可以接收刷新令牌,同时还消除了在浏览器中管理和存储令牌的复杂性和风险。