小编Sea*_*n G的帖子

如何使用Spring Security 5和OAuth2客户端获取刷新令牌并进行API调用?

我目前正在使用 Spring Security + OAUth2 协议构建 Spring Boot 应用程序。

这是我正在关注的 Spotify 授权指南

我无法理解如何执行授权代码流程的步骤 2 - 4。我能够获得授权并获得授权代码来交换访问和刷新令牌,但我不确定如何获取令牌,然后开始进行 API 调用。

阅读 Spring 文档让我对某些事情感到困惑。

  1. 我如何获得令牌?我注意到登录后它存储在重定向的 URL 中,我是使用查询参数获取它还是存储在 OAuth2ClientService 对象中?
  2. 授权指南指出我必须对令牌端点进行 POST 调用才能获取刷新和访问令牌。我假设我没有使用 WebClient/RestTemplate 执行此操作,因为我能够使用应用程序属性执行 GET 登录请求。如果是这样我该如何实现这个目标?
  3. 我如何使用这些令牌来访问 API 数据?通常,如果不需要令牌,我会使用 WebClient 进行 REST API 调用。如果我获得令牌,我会按照通常的方式进行操作,但使用访问令牌作为查询。

这是我的 application.properties

#
# OAuth ClientRegistration Properties
#
spring.security.oauth2.client.registration.spotify.client-id=#
spring.security.oauth2.client.registration.spotify.client-secret=#
spring.security.oauth2.client.registration.spotify.provider=spotify-provider
spring.security.oauth2.client.registration.spotify.client-authentication-method=basic
spring.security.oauth2.client.registration.spotify.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.spotify.redirect-uri=http://localhost:8080/redirect
spring.security.oauth2.client.registration.spotify.scope=user-read-private,user-read-email

#
# OAuth ProviderDetails Properties
#
spring.security.oauth2.client.provider.spotify-provider.authorization-            
uri=https://accounts.spotify.com/authorize?show_dialog=true

spring.security.oauth2.client.provider.spotify-provider.token-  
uri=https://accounts.spotify.com/api/token

spring.security.oauth2.client.provider.spotify-provider.user-info-uri=https://api.spotify.com/v1/me
spring.security.oauth2.client.provider.spotify-provider.user-name-attribute=id
Run Code Online (Sandbox Code Playgroud)

这是我的 WebSecurityConfig

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected …
Run Code Online (Sandbox Code Playgroud)

spring-security spotify oauth-2.0 spring-boot spring-security-oauth2

11
推荐指数
1
解决办法
1万
查看次数