security - OAuth2 流程:通过重定向发送身份验证代码的原因
问题描述
为什么授权服务器通过用户代理(浏览器)将授权代码作为重定向发送,而不是直接发送到客户端回调 URI?
在最安全的流程中,由于存在许多潜在的攻击向量,访问令牌不会通过用户代理浏览器通过重定向发送到客户端后端。这3.4.
在OAuth 2.0 Threat Model and Security Considerations
. 因此,通过浏览器的重定向使短暂的身份验证代码变得有益。
但是让我们假设授权服务器通过某个先前指定的 URI 建立了与客户端的直接通信通道。服务器能否不只是立即发送访问令牌,从而简化流程?
解决方案
浏览器导航到客户端应用程序,被重定向到授权服务器,该服务器进行用户身份验证并发出代码。如果授权服务器将通过反向通道(直接服务器到服务器调用)调用客户端应用程序,以将代码传递给客户端应用程序,它仍然需要在完成后将浏览器重定向回客户端应用程序。
浏览器将如何将自己与发布的代码相关联?客户端应用程序如何知道传入的 HTTP 请求属于发布的代码?
使用客户端生成的状态参数比授权服务器生成的代码风险更大(第二个的生存时间要小得多)。
此外,并非所有授权服务器都能够发出出站请求。
推荐阅读
- sql - 在 Oracle Developer 中撤销多个用户
- r - 如何插入“。” 到数字列中的特定位置?
- django - 如何在基于函数的视图 Django 中分别添加对 GET、POST、PATCH、DELETE 的自定义权限
- python - 如何在知道索引的同时减少到没有任何远距离元素对的数组
- java - XXE - 无法检索多行文件
- c - 输出是 0 而不是我输入的
- sql - 我可以从#temp 表中选择来定义dbmail 的@query 属性吗?
- asp.net - 在现有解决方案上实施 Asp.net 多租户
- javascript - 检查数组是否包含对象时函数未输出正确的值
- android - 检查用户在谷歌支付中是否有信用卡-stripe android