微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring OAuth2,登录成功后在查询参数中返回刷新令牌是否安全?

如何解决Spring OAuth2,登录成功后在查询参数中返回刷新令牌是否安全?

我有一个 React 前端,它使用 Spring OAuth2 后端登录到外部身份提供者。我在寻找一个好的解决方案时遇到了一个问题,即如何在登录完成后安全地将刷新和访问令牌检索回前端。

登录完成后,spring 应用程序将重定向发送回前端应用程序,但此时令牌可用的唯一位置是在 spring 后端的安全上下文中。因此,为了检索令牌,我现在必须向后端发送一个额外的请求,以从安全上下文中获取令牌。

我想知道直接将重定向 url(查询参数)中的刷新令牌返回给应用程序是否安全?如果没有,会面临哪些问题?

解决方法

这将是不安全的,因为刷新令牌将包含在浏览器历史记录和 HTTP 日志中。 OAuth 特意要求如下两个阶段,很多专家从安全角度考虑过:

  • 在用户进行身份验证后,授权重定向会向应用返回一个“一次性使用”授权代码。这是在浏览器中完成的,在那里可能会发生某些类型的攻击和拦截。

  • 接下来,应用程序发送授权代码授予消息,以将代码交换为令牌。令牌在响应正文中返回,不包含在服务器日志或浏览器历史记录中。

对于 OAuth,我总是建议坚持使用基于标准的消息,就像我的 Messages Blog Post 一样。在大多数系统中,您无法更改这些消息,这是一件好事。这样做会降低安全性,还会降低您的应用程序的可移植性。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。