OAuth2.0 client实现

为了实现OAuth2.0 的client,需要做的事情主要有下面几步:

  • 注册您的客户端应用程序。
  • 获取您的access token
  • 使用您的access token访问受保护的资源。
  • 如果可以,可以在access token过期的时候,刷新access token的生命期限

刷新access token的功能仅适用于受信任的客户端。 为了使客户端应用程序刷新其access token,
它必须能够安全地存储access token。 此功能仅适用于受信任的客户端。

注册客户端应用程序

在开始向OAuth 2.0服务提供商发出请求之前,服务提供商必须首先知道您是谁。 这就是注册过程。 注册过程做了很多事情,但最重要的是,它建立了应用程序和服务提供商之间的信任关系,以便一旦建立起来,您的应用程序就可以与服务提供商进行有效的沟通。 这是一个一次性的过程,必须在集成开始时完成。 注册后,您不必在应用程序的整个生命周期中重复此步骤(尽管您可能必须重新访问在此步骤期间设置的配置,因为随着应用程序的发展,您的需求和设置可能会更改)。 以下是注册过程中完成的内容的简要列表,以及为什么:

  • 您需要唯一标识您的客户端应用程序:主要用于区分您的应用程序与其他所有应用程序。
  • 您提供有关您的客户端应用程序的必要细节:您的客户端应用程序有一些服务提供商需要知道的属性,以便有效地进行通信。
    比如服务提供商需要知道你采用的是隐试授权流程还是授权代码授权流程。

在向不同的OAuth 2.0服务提供商注册时,您会注意到每个提供商的注册过程可能是不一样的,需要的信息也可能是不一样的。 它们都由相同的OAuth 2.0协议驱动。 所以,虽然每个提供商都有不同的服务提供商特定的属性,但是有一个基本的信息集:

  • client ID 这个可以唯一标识你的应用程序,有些服务提供商会自己生成client id,有些需要自己提供。
  • client secret 这是您应用程序的秘密密钥,用于在发出请求时识别自身。 这将始终由服务提供商发给您。
  • Redirection endpoint 这是服务提供商将用于向您发送响应(通常为令牌或错误)的端点。 大多数时候,这将由你提供。
  • Authorization endpoint 这是您的客户端应用程序用于启动授权流程的端点。 这将由服务提供商决定。
  • Token endpoint 这是您的客户端应用程序将用于启动令牌流的端点。 这也将由服务提供商决定。

比如:

  • Client ID: goodapp-541106
  • Client secret: 38D83HHFF873RASDPPEKJ1KHJZL
  • Redirection endpoint: https://www.goodapp.com/callback
  • Authorization endpoint: https://api.facebook.com/auth
  • Token endpoint: https://api.facebook.com/token

获取access token

在你注册完成自己的client应用程序以后,你就可以获取access token了。一般服务提供商都会提供获取access token的接口,会用到注册client程序的时候的一些信息。

在更技术的术语中,access token是对通常具有指定的访问持续时间的单个受保护资源或一组受保护的资源的封装。这通常表示为给客户端的不透明字符串。
access token封装一组受保护资源的访问以及使该访问过期的能力的概念使得访问令牌比传统的物理密钥更强大。access token的这两个属性分别被称为访问的范围持续时间

撤销token

有时候,我们想在access token过期之间撤销授权,这被称为令牌撤销。 一些服务提供商支持这一功能。

刷新token

有一些服务提供商支持刷新token,这种情况下,当你在获取access token的时候,也会获得一个额外的刷新token,这个刷新token用来在access token过期以后刷新他的生命周期。因此刷新token一般情况下都需要client端安全的存储下来,所以一般用于授权代码授权流程中。

使用access token

具体access token的使用比较简单,一般参照服务提供商的文档进行使用就好了。

刷新access token

如果服务提供商支持刷新token的话,在access token过期以后使用刷新token来刷新access token的生命周期,否则的话,就需要走一次完整的身份认证过程,这可能需要用户重新登录。
如果刷新令牌本身也具有到期时间。 并且刷新令牌发生过期,这样我们就无法刷新access token了,这个时候我们唯一能做的就是和以前没有刷新令牌一样:重新启动验证流程。

参考资料

本文版权归作者所有,禁止一切形式的转载,复制等操作
赞赏

微信赞赏支付宝赞赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注