我正在尝试使用 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/