简体中文
  • oauth
  • 设备流
  • cli
  • 认证
  • 设备代码

OAuth 2.0 设备流的简要介绍

本文探讨了 OAuth 2.0 设备流,这是一种用于在缺乏浏览器以执行基于用户代理的授权或输入受限的设备上的身份验证解决方案,概述了其目的和用户交互流程。

Yijun
Yijun
Developer

作为一个授权框架,OAuth 2.0 被广泛应用于各种场景。在 OAuth 提供的认证流中,最常见的是 授权代码流。当用户在应用程序中使用授权代码流验证其身份时,应用会从设备上打开一个浏览器,访问授权端点,然后用户输入其标识符(用户名、电子邮件等)和凭证(密码、验证码等)以完成认证。

然而,当用户尝试在没有浏览器或甚至没有输入其账号凭证能力的设备上使用应用程序时,我们如何通过 OAuth 2.0 进行身份验证呢?这就是“设备流”登场之时。

什么是 OAuth 2.0 设备流

OAuth 2.0 设备流是 OAuth 2.0 协议的一种实现,旨在支持输入能力有限或缺乏合适浏览器的设备。这些设备包括智能电视、物联网设备、打印机等。

设备流使用户能够在上述设备上发起授权请求,随后,用户可以通过另一台具有浏览器访问和输入能力的设备(如智能手机或个人电脑)审查授权请求并完成用户授权。

此外,设备流通常用于 CLI 工具(如 Stripe、Github、Cloudflare 提供的那些工具),因为 CLI 工具通常在没有图形界面的操作系统上运行。

使用设备流时的用户交互流程

当用户使用设备流进行认证时,主要包括以下步骤:

  1. 设备客户端使用客户端标识向认证服务器请求授权(通常是认证服务器平台上的客户端 ID)。
  2. 认证服务器响应设备客户端,提供设备代码、用户代码和验证 URI。
  3. 设备客户端以文本(或二维码等)形式显示验证 URI 和用户代码,指示用户访问 URI 并输入代码。
  4. 与步骤 3 同时,设备客户端使用设备代码和客户端标识开始向认证服务器轮询获取访问令牌,并开始等待用户审查授权请求并完成用户授权。
  5. 用户通过另一台设备的浏览器访问由认证服务器托管的验证 URI,并输入用户代码。
  6. 认证服务器将用户重定向到登录页面,并指示用户完成登录。
  7. 用户完成登录流程并成功登录。
  8. 认证服务器将用户重定向到登录成功页面,并指示用户关闭浏览器。
  9. 与步骤 8 同时,认证服务器向设备客户端返回访问令牌,因为客户端自步骤 4 起一直在进行轮询。

完成这些流程后,设备客户端将能够获取用于后续服务的访问令牌!

总结

正如你所观察到的,OAuth 2.0 设备流为缺乏简便输入能力或浏览器的设备提供了一种用户友好的登录方式。这对于智能电视、物联网设备以及运行在没有图形界面设备上的 CLI 工具来说是非常重要的。

令人兴奋的消息是,Logto 正在支持设备流功能的过程中。敬请关注,我们会及时向你通报最新动态。