首页 > 解决方案 > OAuth2 流程:通过重定向发送身份验证代码的原因

问题描述

为什么授权服务器通过用户代理(浏览器)将授权代码作为重定向发送,而不是直接发送到客户端回调 URI?

在最安全的流程中,由于存在许多潜在的攻击向量,访问令牌不会通过用户代理浏览器通过重定向发送到客户端后端。这3.4.OAuth 2.0 Threat Model and Security Considerations. 因此,通过浏览器的重定向使短暂的身份验证代码变得有益。

但是让我们假设授权服务器通过某个先前指定的 URI 建立了与客户端的直接通信通道。服务器能否不只是立即发送访问令牌,从而简化流程?

标签: securityauthenticationredirectoauth-2.0

解决方案


浏览器导航到客户端应用程序,被重定向到授权服务器,该服务器进行用户身份验证并发出代码。如果授权服务器将通过反向通道(直接服务器到服务器调用)调用客户端应用程序,以将代码传递给客户端应用程序,它仍然需要在完成后将浏览器重定向回客户端应用程序。

浏览器将如何将自己与发布的代码相关联?客户端应用程序如何知道传入的 HTTP 请求属于发布的代码?

使用客户端生成的状态参数比授权服务器生成的代码风险更大(第二个的生存时间要小得多)。

此外,并非所有授权服务器都能够发出出站请求。


推荐阅读