如果有人窃取了Oath2流中的身份验证代码,该怎么办

时间:2019-01-30 10:17:08

标签: oauth oauth-2.0

请观看此视频,具体时间从20.00到25.00。

https://azure.microsoft.com/en-us/resources/videos/new-authentication-model-for-web-mobile-and-cloud-applications/

他描述的工作流程是这样的: 客户端应用程序通过浏览器连接到授权端点。用户输入凭据,然后身份验证服务器对用户进行身份验证,并使用重定向发送身份验证代码。客户端应用拦截浏览器活动并提取身份验证代码。对令牌端点的新请求将与此身份验证代码,客户端ID和其他一些信息一起发出。作为回报,应用程序可以访问并刷新令牌。

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

1 个答案:

答案 0 :(得分:1)

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

  1. 客户端通过指示资源所有者的身份来启动流程     授权端点的用户代理。客户包括     它的客户标识符,请求的范围,本地状态以及     授权服务器将重定向到的重定向URI     一旦授予(或拒绝)访问权限,用户代理就会返回。
  2. 授权服务器对资源所有者进行身份验证(通过     用户代理),并确定资源所有者是否     授予或拒绝客户端的访问请求。
  3. 假设资源所有者授予访问权限,则授权  服务器使用以下命令将用户代理重定向回客户端     先前提供的重定向URI(在请求中或期间     客户注册)。重定向URI包含一个     授权代码和客户端提供的任何本地状态     较早。
  4. 客户端从授权请求访问令牌     服务器的令牌端点(包括授权代码)     在上一步中收到。提出要求时,     客户端通过授权服务器进行身份验证。客户端     包括用于获得授权的重定向URI     验证代码。
  5. 授权服务器对客户端进行身份验证,对     授权码,并确保重定向URI     收到的用于重定向客户端的URI匹配     步骤(C)。如果有效,授权服务器将以以下方式回复     访问令牌和(可选)刷新令牌。

#section-4.1

Oauth流

让我们用一些正确的术语来做到这一点。

  • 客户=您的应用程序
  • authority =身份或oauth2服务器(权限)
  • 资源所有者=您希望访问的用户数据。

资源所有者加载客户端,客户端会注意到该资源所有者未获得授权。资源所有者联系使用客户端ID(可能还包括客户端密钥)标识自己的权限并发送重定向uri,并请求范围。 (发送的某些内容取决于auth服务器的设置)

当局会通知此资源所有者未登录,提示他们登录。资源所有者登录并检查客户端最初请求的范围。提示资源所有者向客户端授予访问该范围的权限。

enter image description here

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

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

然后,Authority将访问令牌返回给客户端,供下一个小时使用。

然后不重新验证访问令牌。因此,如果有人窃取了此访问令牌,他们将可以使用它直到到期。