为什么 OAuth2 不允许在重定向 URI 中包含片段标识符?

Pir*_*jah 5 oauth-2.0 openid-connect

根据 OAuth2.0规范,重定向 URI 不应包含片段标识符。

重定向端点 URI 必须是 [RFC3986] 第 4.3 节定义的绝对 URI。端点 URI 可以包含“application/x-www-form-urlencoded”格式的(根据附录 B)查询组件([RFC3986] 第 3.4 节),在添加其他查询参数时必须保留该组件。端点 URI 不得包含片段组件。

规范做出这样的限制有什么具体原因吗?

提前致谢!

Kav*_*uwa 5

URL 片段永远不会离开您的浏览器。它们旨在由前端使用(这意味着如果您将哈希片段放入浏览器中的 URL 并访问它,片段将不会到达服务器端)。

因此,当授权服务器通过用户代理重定向时,片段将仅保留在用户代理上。从 OAuth 的角度来看,这可能会带来不必要的复杂性和安全漏洞。最佳实践草案中的重定向 URI 验证不足进一步强调了这一点。


Ján*_*aša 0

我认为反对片段部分的原因是它在隐式流程中的使用。由于 URL 片段部分的语法未标准化,OAuth2 服务器不知道如何将其信息(access_token 等)添加到重定向 URL 的现有片段值中。