账户关联角色 - 的托管集成 AWS IoT Device Management

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

账户关联角色

要创建 C2C 连接器,你需要一个 OAuth 2.0 授权服务器和账户关联。有关更多信息,请参阅 账户关联工作流程

OAuth 2.0 在实现账户关联时定义了以下四个角色:

  1. 授权服务器

  2. 资源所有者(最终用户)

  3. 资源服务器

  4. 客户端

以下内容定义了这些 OAuth 角色中的每一个:

授权服务器

授权服务器是识别和验证第三方云中最终用户身份的服务器。此服务器提供的访问令牌可以将 AWS 最终用户的客户平台帐户与其第三方平台帐户关联起来。此过程称为账户关联。

授权服务器通过提供以下内容来支持账户关联:

  • 显示登录页面,供最终用户登录您的系统。这通常被称为授权端点。

  • 对系统中的最终用户进行身份验证。

  • 生成识别最终用户的授权码。

  • 将授权码传递给 AWS IoT Device Management 的托管集成。

  • 接受 AWS IoT Device Management 托管集成的授权码,并返回访问令牌,AWS IoT Device Management 的托管集成可用于访问系统中最终用户的数据。这通常通过单独的 URI(称为令牌 URI 或端点)完成。

重要

授权服务器必须支持 OAuth 2.0 授权码流程,才能与 AWS IoT Device Management Connector 的托管集成一起使用。AWS IoT Device Management 的托管集成还支持带有代码交换证明密钥 (PKCE) 的授权代码流。

授权服务器必须:

  • 发布包含可提取的最终用户或资源所有者 ID 的访问令牌,例如 jwt-Tokens

  • 能够返回每个已发放的访问令牌的最终用户 ID

否则,您的连接器将无法支持所需的AWS.ActivateUser操作。这将防止在托管集成中使用连接器。

如果连接器开发者或所有者没有维护自己的授权服务器,则使用的授权服务器必须为连接器开发者第三方平台管理的资源提供授权。这意味着托管集成从授权服务器接收的任何令牌都必须在设备(资源)上提供有意义的安全边界。例如,最终用户令牌不允许在另一台最终用户设备上执行命令;该令牌提供的权限会映射到平台内的资源。以 L ights 公司为例。当最终用户启动与其连接器的账户关联流程时,他们将被重定向到授权服务器正面的 L ights In corporated 登录页面。一旦他们登录并向客户端授予权限,他们就会提供一个令牌,允许连接器访问其 L ights In corporated 账户中的资源。

资源所有者(最终用户)

作为资源所有者,您可以通过执行账户关联来允许 AWS IoT Device Management 客户通过托管集成访问与您的账户关联的资源。例如,以最终用户已登录 Lights Incorporated 移动应用程序的智能灯泡为例。资源所有者是指购买并登录设备的最终用户账户。在我们的示例中,资源所有者被建模为 L ights In OAuth2 corporated .0 账户。作为资源所有者,此账户提供发出命令和管理设备的权限。

资源服务器

这是托管需要授权才能访问的受保护资源(设备数据)的服务器。 AWS 客户需要代表最终用户访问受保护的资源,他们可以通过账户关联后的 AWS IoT Device Management 连接器的托管集成来访问受保护的资源。以之前的智能灯泡为例,资源服务器是L ights In corporated拥有的一项基于云的服务,用于在灯泡上线后对其进行管理。通过资源服务器,资源所有者可以向智能灯泡发出命令,例如将其打开和关闭。受保护的资源仅向最终用户的账户以及 accounts/entities 他们可能已提供权限的其他账户提供权限。

客户端

在这种情况下,客户端就是您的 C2C 连接器。客户机被定义为代表最终用户授予对资源服务器内资源的访问权限的应用程序。账户关联过程代表连接器(客户端),请求访问第三方云中最终用户的资源。

尽管连接器是 OAuth 客户端,但 AWS IoT Device Management 的托管集成代表连接器执行操作。例如,AWS IoT Device Management 的托管集成向授权服务器发出获取访问令牌的请求。连接器仍被视为客户端,因为它是访问资源服务器中受保护资源(设备数据)的唯一组件。

以最终用户安装的智能灯泡为例。在客户平台和L ights In corporated授权服务器之间完成账户关联后,连接器本身将与资源服务器通信,以检索有关最终用户智能灯泡的信息。然后,连接器可以接收来自最终用户的命令。这包括通过 Lights Incorporated 资源服务器代表他们打开或关闭灯。因此,我们将连接器指定为客户端。