Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security OAuth2流:通过重定向发送身份验证代码的原因_Security_Authentication_Redirect_Oauth 2.0 - Fatal编程技术网

Security OAuth2流:通过重定向发送身份验证代码的原因

Security OAuth2流:通过重定向发送身份验证代码的原因,security,authentication,redirect,oauth-2.0,Security,Authentication,Redirect,Oauth 2.0,为什么授权服务器通过用户代理(浏览器)将授权代码作为重定向发送,而不是直接发送到客户端回调URI? 在最安全的流中,由于存在大量潜在的攻击向量,访问令牌不会通过用户代理浏览器通过重定向发送到客户端后端。这在OAuth 2.0威胁模型和安全注意事项的3.4.中有说明。因此,通过浏览器的重定向使短暂的身份验证代码变得有益 但是,让我们假设授权服务器通过一些先前指定的URI建立了与客户端的直接通信通道。服务器是否可以立即发送访问令牌,从而简化流程?浏览器导航到客户端应用程序,被重定向到授权服务器,授权

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

在最安全的流中,由于存在大量潜在的攻击向量,访问令牌不会通过用户代理浏览器通过重定向发送到客户端后端。这在OAuth 2.0威胁模型和安全注意事项的
3.4.
中有说明。因此,通过浏览器的重定向使短暂的身份验证代码变得有益


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

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

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

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


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

应用程序如何将收到的令牌与用户会话关联?好问题,我考虑过了。我会说,通过与请求数据一起提交的
state
参数。因此,客户端在启动请求时创建的这个随机id/字符串将用于与用户会话建立关联。
state
是一种反csrf措施,将其用于完全不同的目的是错误的。有效点,那么,传递一个特定于用户的ID,以便客户机知道响应属于谁呢?不可能吗?我想不那样做肯定还有另一个原因。实际上,我认为这可能与外部服务器(不像用户那样登录)无法访问响应的某些回调URL有关,或者这会降低处理此类响应的灵活性。关于第一部分:好的一点,用户代理不应该无限期地停留在授权服务器上。关于第2段:状态参数由客户端创建(例如,根据规范5.3.5,会话cookie的哈希),服务器应以相同的状态应答。为什么在使用直接反向通道的情况下使用状态关联会有风险?通常,当服务器发出授权代码时,它会将浏览器重定向回客户端,客户端将立即将代码交换为访问令牌。状态是在客户端认证之前生成的,为它被盗留下了较大的空白。添加额外的行来回答另一个原因,这可能不起作用。您添加的最后一行是有意义的,但我以前没有认为这是一个选项。但应注意的是,还有另外两个流仅为反向通道。我的问题是为什么不早点转到后频道。但是我想有一些缺点,通过授权代码并不是那么复杂。@Marcellvs请记住,使用后台通道的流是从客户端向授权服务发起请求,而不是相反。限制授权服务向其他服务器发起请求是完全有效的。尽管对于后通道注销,这是必需的。