在前端通道中进行授权码 URI 重定向是个坏主意吗?
Is it a bad idea to do Authorization Code URI redirect in a frontchannel?
我目前正在编写一个 OAuth 2.0 系统,其中包含一个身份验证服务器前端,该前端包含通过将请求作为 XMLHTML 显示登录结果(成功或失败)的逻辑在 JavaScript 中请求,解析来自后端的响应,并将状态注入回 DOM(而不是在 HTML 中直接发送 POST form
通过提交操作而不使用 XMLHTTPRequest).
为了保留此授权服务器 UI 行为,同时也进入 OAuth 2.0 的下一步,我打算在授权服务器前端 JavaScript:
window.location.href = 'client.tld/callback?authorization_code=abc123'
我了解一旦客户端获得授权代码,他们需要通过安全的反向通道调用(后端到后端)发出获取访问代码的请求。但是,我找不到任何确定的信息来确定通过前端通道重定向到客户端的授权代码回调(即通过前端 JavaScript 代码使用授权代码重定向)是否不安全。
与在授权服务器后端重定向相比,这是否会造成安全漏洞?
从技术上讲,如何进行重定向并不重要。但是授权码是敏感信息,如果不是真的有必要,我宁愿避免在 JavaScript 中使用它。它只是创造了更多的可能性来攻击应该以安全为第一要务的系统——你的前端可能有一些可能被滥用的错误。
我目前正在编写一个 OAuth 2.0 系统,其中包含一个身份验证服务器前端,该前端包含通过将请求作为 XMLHTML 显示登录结果(成功或失败)的逻辑在 JavaScript 中请求,解析来自后端的响应,并将状态注入回 DOM(而不是在 HTML 中直接发送 POST form
通过提交操作而不使用 XMLHTTPRequest).
为了保留此授权服务器 UI 行为,同时也进入 OAuth 2.0 的下一步,我打算在授权服务器前端 JavaScript:
window.location.href = 'client.tld/callback?authorization_code=abc123'
我了解一旦客户端获得授权代码,他们需要通过安全的反向通道调用(后端到后端)发出获取访问代码的请求。但是,我找不到任何确定的信息来确定通过前端通道重定向到客户端的授权代码回调(即通过前端 JavaScript 代码使用授权代码重定向)是否不安全。
与在授权服务器后端重定向相比,这是否会造成安全漏洞?
从技术上讲,如何进行重定向并不重要。但是授权码是敏感信息,如果不是真的有必要,我宁愿避免在 JavaScript 中使用它。它只是创造了更多的可能性来攻击应该以安全为第一要务的系统——你的前端可能有一些可能被滥用的错误。