Oauth 如果有人在Oath2流中窃取了授权代码,会发生什么

Oauth 如果有人在Oath2流中窃取了授权代码,会发生什么,oauth,oauth-2.0,Oauth,Oauth 2.0,请参阅此视频,具体时间为20:00至25:00 他描述的工作流程如下: 客户端应用程序通过浏览器连接到授权端点。用户输入凭据,authserization server对用户进行身份验证,并使用re-direct发送身份验证代码。客户端应用程序截取浏览器活动并提取身份验证代码。将向令牌端点发出一个新请求,并附上此身份验证代码、客户机id和少量其他信息。作为回报,应用程序获得访问和刷新令牌 是什么阻止某人在第一步(比如通过浏览器历史记录)窃取身份验证令牌,然后联系令牌端点以获取访问权并刷新令牌?

请参阅此视频,具体时间为20:00至25:00

他描述的工作流程如下: 客户端应用程序通过浏览器连接到授权端点。用户输入凭据,authserization server对用户进行身份验证,并使用re-direct发送身份验证代码。客户端应用程序截取浏览器活动并提取身份验证代码。将向令牌端点发出一个新请求,并附上此身份验证代码、客户机id和少量其他信息。作为回报,应用程序获得访问和刷新令牌


是什么阻止某人在第一步(比如通过浏览器历史记录)窃取身份验证令牌,然后联系令牌端点以获取访问权并刷新令牌?

先发授权码通常仅在3分钟内有效。第二个授权码只能使用一次。第三个重定向uri必须是在oauth服务器上为此客户端注册的有效uri

  • 客户端通过引导资源所有者的 将用户代理添加到授权端点。客户包括 其客户端标识符、请求的作用域、本地状态和 授权服务器将向其发送请求的重定向URI 一旦授予(或拒绝)访问权限,用户代理将返回
  • 授权服务器验证资源所有者(通过 用户代理),并确定资源所有者 授予或拒绝客户端的访问请求
  • 假设资源所有者授予访问权限,则授权 服务器使用 先前提供的重定向URI(在请求中或在 客户注册)。重定向URI包括 授权代码和客户提供的任何当地州 早些时候
  • 客户端从授权服务器请求访问令牌 服务器的令牌终结点,包括授权代码 在上一步中收到。在提出请求时 客户端通过授权服务器进行身份验证。客户 包括用于获取授权的重定向URI 验证代码
  • 授权服务器验证客户端,验证 授权代码,并确保重定向URI received与中用于重定向客户端的URI匹配 步骤(C)。如果有效,授权服务器将使用 访问令牌和(可选)刷新令牌
  • Oauth流

    让我们用一些正确的术语来做这件事

    • Client=您的应用程序
    • 授权=身份或oauth2服务器(授权)
    • resource owner=您希望访问其数据的用户
    资源所有者加载客户端,客户端注意到资源所有者未经授权。资源所有者通过使用客户机id(可能还有客户机机密)标识自身并发送重定向uri来联系权威机构,并请求作用域。(发送的某些内容取决于身份验证服务器的设置)

    权威机构通知此资源所有者未登录,提示他们登录。资源所有者登录并检查客户端最初请求的作用域。提示资源所有者授予客户端对所述作用域的访问权限

    资源所有者同意访问。授权机构向客户返回授权代码

    客户说我有一个授权码,并将授权码及其客户id和密码返回给管理局。这样,管理局就知道这实际上是资源所有者授权的客户机

    然后,授权机构将访问令牌返回给客户端,以便在下一个小时使用


    然后不会重新验证访问令牌。因此,如果有人偷了这个访问令牌,他们将能够使用它,直到它过期。

    所有这些都不能消除我强调的问题。任何人在此时间段内窃取未使用的身份验证代码都可以访问令牌。我不知道为什么重定向uri与此相关?除非在3分钟内盗取未使用的身份验证代码的人在服务器上注册了有效的重定向uri,他们可以将刷新令牌返回到服务器,否则他们将无法获得任何返回。一些oauth服务器甚至要求您在交换授权码时也发送客户端密码。正如DaImTo所提到的,
    /token
    端点需要身份验证(用于匹配
    /auth
    请求的客户端ID的客户端密码)或作为一次性密码的客户端密码。因此,即使身份验证代码被盗,攻击者仍然需要被攻击客户端的密码或
    code\u验证器
    来获取令牌。谢谢@DalmTo。当您说客户端使用授权服务器进行身份验证时,实际发生了什么?您能详细说明一下吗?@DaImTo您能详细说明一下您所说的授权服务器客户端身份验证是什么意思吗?