【问题标题】:Spring OAuth redirect URL confusionSpring OAuth 重定向 URL 混淆
【发布时间】:2021-04-19 00:08:36
【问题描述】:

我目前正在按照本指南在 Spring boot https://www.callicoder.com/spring-boot-security-oauth2-social-login-part-1/ 中构建身份验证服务

我已对其进行了修改,因此当用户使用用户名和密码创建帐户时,它也会返回一个 refresh_token。

但是,当我使用 facebook 或 google 执行身份验证流程时,我看到访问令牌附加在重定向 URL (see here github link) 中

现在阅读OAuth doc 这似乎是有道理的。但是,我如何也将刷新令牌返回给用户。在 URL 中同时传递访问令牌和刷新令牌是否安全?

这是我和我的伙伴正在做的一个副项目(他正在做他还没有开始的前端:D)所以我很好奇它是否 1)可以将两个令牌放入 URL 和 2)我应该以某种方式为他将这些设置为 cookie httpOnly。

【问题讨论】:

  • 进一步阅读后。重定向实际上是否应该只包含一个授权代码,然后客户端使用该授权代码通过不同的端点获取访问令牌/刷新令牌?
  • 您可以将 gihub 链接添加到您的仓库吗?它被提及但不存在。谢谢
  • 抱歉,现在更新了链接。谢谢你看看顺便说一句
  • 太棒了,谢谢。我正在写答案

标签: spring spring-boot spring-security oauth-2.0


【解决方案1】:

您也可以在 url 中返回刷新令牌。其他可能的解决方案是将响应正文中的两个标记作为 JSON 有效负载写入。

关于您的其他问题,您可以安全地将刷新令牌存储在 HttpOnly cookie 中,因为这是保存敏感会话相关数据的推荐方式。

【讨论】:

  • 感谢您的回复 Santiago,您知道吗,在 URL 中传递两个令牌是否存在任何安全风险?这也是一种标准的方法吗?还是我应该使用另一种类型的 OAuth 流程,例如授权代码授予类型
  • 关于安全风险,就我而言不是,但我可能需要做更多的研究。由于重定向,这是使用 Spring Social 的方法。使用默认登录方法,您应该将刷新令牌和授权类型以及其他有用的数据(如过期时间)添加到身份验证响应负载中。
  • 感谢您的回复。为什么在响应中添加grant_type 有任何用处。
  • 这是授权流程的推荐做法。有时将这些数据放在前端很有用。
  • 非常感谢您提供的信息!你太有帮助了!如果可以的话,最后一个问题。有没有使用grant_type 进行社交登录的好指南?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-24
  • 2015-08-28
  • 2011-12-08
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多