当前位置: 首页 > 知识库问答 >
问题:

如何从Spring授权服务器示例获取刷新令牌

朱自明
2023-03-14

对于带有PKCE的Oauth 2.1,官方示例Spring授权服务器默认返回一个access_token和id_token

html" target="_blank">https://github . com/spring-projects/spring-authorization-server/tree/main/samples/default-authorization server

endpoint/oauth2/token有没有可能在响应中也返回一个refresh_token?为了获得refresh_token,我需要对示例进行哪些更改或配置?

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

CSRF残疾人协会

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

已更改ClientAuthenticationMethod.CLIENT_SECRET_BASIC客户端身份验证方法。无

已更改 requireAuthorizationConsent(true) to requireProofKey(true)

共有1个答案

罗建弼
2023-03-14

您提到在PKCE中使用授权代码流,这对机密客户端和公共客户端都有效。但是,当使用公共客户端(客户端身份验证方法=无,无客户端机密)时,不会发出刷新令牌。

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

刷新公共客户端的令牌

没有为公共客户端实施刷新令牌的计划,因为没有允许以安全方式存储刷新令牌的浏览器API,这将导致攻击面增加。

有关刷新令牌的更多信息,请参阅#297,该令牌在很大程度上基于OAuth 2.0 for Browser-Basic Apps和OAuth 2.0安全最佳当前实践的建议。使用公共客户端时的建议是使用“backend for frontend”模式。BFF将是一个机密客户端,可以接收刷新令牌,同时还可以消除在浏览器中管理和存储令牌的复杂性和风险。

 类似资料:
  • 我在下面设置Spring配置: 和Maven设置如下:

  • 我通过spring security oauth2实现了oauth2授权服务器,并使用来存储访问令牌,然后我需要为当前访问令牌提供控制器,以便oauth2客户端获取用户信息, 如下: 但我不知道如何获取用户信息?

  • 我试图用oauth2和jwt为我的API添加安全性。所以目前我可以使用以下命令并获得访问令牌。curl客户端:secret@localhost:8080/oauth/token-d grant_type=password-d username=user-d password=password 显然,我不打算为每个用户调用它))我的问题是在哪里调用这个命令?我应该创建像“localhost:8080

  • 我执行本问题中描述的步骤: Laravel的5.3护照和api路由 从api的路径来看,一切都很好,我可以注册新用户,读取他们的数据等等。 然后在AuthServiceProvider上添加此命令 护照::代币ExpireIn(碳::现在()- 我以url{{url}}/oauth/token登录邮递员 正文:application/x-www-form-urlencoded { 授权类型:{pa

  • 我已经阅读了许多帖子,所有我能找到的Google文档,并尝试了以下的许多迭代,但仍然无法获得访问和刷新令牌。我确实获得了授权代码,但似乎无法获得该代码来交易访问和刷新令牌。 这样,我就可以在我的属性中剪切并粘贴一个访问代码(只是测试并尝试让它先工作)来获得刷新和访问令牌。 在initRefreshToken()方法中,源代码如下: 如果这是第二次或以后使用该代码,将打印以下内容: 推荐令牌: **

  • 我有2个应用程序运行,一个是资源服务器,我有需要认证的信息,以查看文本。然后我有授权服务器提供令牌。现在我可以使用postman或Insomnia,添加auth_url、token_url、client_id、client_secret并获得令牌。我将令牌添加到header,并使用header向资源服务器执行get请求,它工作得很好。 我想被重定向到: 本地主机:9001/登录 我用inmemor