了解OAuth2流程

时间:2015-04-01 14:51:58

标签: rest oauth

我开发的Android应用程序使用的是使用OAuth协议的REST服务。在第一个活动中,app显示登录屏幕。这是流程:

1)用户输入用户名和密码。

2)App向REST服务发出请求,提供用户名和密码。

3)REST服务检查凭据,如果正确,请向我的OAuth2提供商服务器请求access_token

4)REST服务回答提供access_tokenrefresh_token

的应用

5)在接下来的REST服务器请求(获取人,文章等数据......)应用程序将提供access_tokenrefresh_token

6)当REST服务处理请求时,将验证access_token(使用我的OAuth服务器的令牌信息端点)。

7)如果access_token正确且未过期,REST服务将返回该应用所要求的数据。

当REST服务检测到access_token已过期时,请使用refresh_roken请求其他人。

现在,我的问题:

当REST服务在旧服务到期后检索新的access_token时,REST服务是否将该服务发送给该响应中的应用程序?

如果是这样,应用程序是否在每个请求/响应中检查是否已从REST服务发送新的access_token

我不知道我是否以正确的方式,我试图理解这一流程。

感谢。

2 个答案:

答案 0 :(得分:9)

假设没有涉及浏览器且应用程序(又名客户端)使用所谓的资源所有者密码凭证授权,则流程为:

  1. 用户(又名资源所有者)向客户提供他/她的用户名和密码

  2. 客户端向授权服务器发出令牌请求,提供用户名和密码

  3. 授权服务器检查凭据,如果它们是正确的,它会在响应中为客户端提供访问令牌和可选的刷新令牌

  4. 在对REST服务器的请求中(为了获取人员,文章......等数据),客户端将提供访问令牌

  5. 当REST服务处理请求时,它将验证调用授权服务器的令牌验证端点的访问令牌,或者通过在本地验证令牌(例如,如果访问令牌是JWT)。

  6. 如果访问令牌正确,未过期且具有正确的权限(又名。"范围"),则REST服务将返回客户端要求的数据

  7. 当客户端检测到access_token已过期时(例如,因为REST服务器返回错误),它会使用所谓的刷新令牌授权/流程使用刷新令牌向授权服务器请求另一个访问令牌

答案 1 :(得分:0)

OAuth 2.0流程:

  1. 应用程序向auth提供者注册,例如具有应用名称,网站和回调/回发URL的Facebook,Google等
  2. 应用程序从身份验证提供程序接收客户端ID和机密
  3. 应用程序用户访问身份验证提供程序进行身份验证,并批准资源权限
  4. 身份验证提供程序返回有关应用程序用户权限的身份验证令牌
  5. 应用程序使用auth令牌访问资源提供者
  6. 资源提供者在验证了应用程序的身份验证令牌后,会返回受保护的资源

如果您需要更多的理解,请发表评论!