rest - 为什么 google-oauth API 需要重定向 URL?

标签 rest http security authorization google-oauth

我正在尝试使用 google-oauth2 API 设置授权流程。 任务是在我的网络应用程序中向用户授权 Google 帐户,该应用程序由前端和后端部分组成。

根据文档的流程包含 2 个步骤:
1)获取授权码
2)用授权码交换 token

在我的流程中,FE 客户端从 google 获取身份验证代码并将其提交给 BE,然后 BE 将其交换为 token ,因此不使用重定向 URL(或有时称为回调 URL)。

我不明白为什么 google API 要求我为第二步提供 redirect_uri?由于此步骤是由服务器而不是浏览器执行的,因此我认为这段信息没有任何意义。服务器仅调用 POST/oauth2/v4/token google 端点并接收 token 作为响应。

请参阅步骤 4 https://developers.google.com/identity/protocols/OpenIDConnect

最佳答案

根据this ,这是为了防止窃取access_token。如果服务不检查初始 redirect_uri,授权代码将发送到黑客的 redirect_uri,然后黑客可以将其交换为 access_token ,即非法访问用户帐户。要实际获取 access_token,需要再次指定 redirect_uri,这次服务器必须根据为该应用程序注册的内容进行检查。此时,黑客就被挫败了,因为伪造的 redirect_uri 与任何合法的都不匹配。显然,某些服务器在授权阶段不会检查 redirect_uri,并在请求 access_token 时再次发送 redirect_uri 旨在提供最终的安全检查。

关于rest - 为什么 google-oauth API 需要重定向 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57603372/

相关文章:

security - 有计费系统经验

asp.net - 这种基于 LINQ 的搜索是否可以安全抵御 SQL 注入(inject)/XSS 攻击?

java - 在 REST 方法中获取原始请求( springframework )

java - Spring Boot 单元测试 - 缺少 bean 运行测试

http - 如何根据 Content-Length header 检查实际内容长度?

http - 我可以使用 HTTP HEAD 请求发布表单数据吗?

javascript - 如何使用 Node js 中的 API key 从 REST api 获取数据?

javascript - 这个接受 Express 中的 RequestHandler 的函数是如何工作的?

javascript - 以 MVVC/AngularJS 方式将数据发布为 multipart/form-data

PHP 摘要认证,注销