

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

# OAuth 2.0 账户关联要求
<a name="concepts-account-linking"></a>

每个 C2C 连接器都依赖 OAuth 2.0 授权服务器对最终用户进行身份验证。通过此服务器，最终用户将其第三方账户与客户的设备平台关联起来。账户关联是最终用户使用 C2C 连接器支持的设备所需的第一步。有关账户关联和 OAuth 2.0 中不同角色的更多信息，请参阅。[账户关联角色](roles-account-linking.md)

虽然您的 C2C 连接器不需要实现特定的业务逻辑来支持授权流程，但与 C2C 连接器关联的 OAuth2.0 授权服务器必须满足。[OAuth 配置要求](#oauth-config-requirements)

**注意**  
托管集成 AWS IoT Device Management 仅支持带有授权码流的 OAuth 2.0。有关更多信息，请参阅 [RFC 6749](https://datatracker.ietf.org/doc/html/rfc6749#section-1.3.1)。

账户关联是一个允许托管集成和连接器使用访问令牌访问最终用户设备的过程。此令牌为最终用户许可的 AWS IoT Device Management 提供托管集成，以便连接器可以通过 API 调用与最终用户的数据进行交互。有关更多信息，请参阅 [账户关联工作流程](account-linking-flow.md)。

我们建议您不要在任何日志中记录这些敏感令牌。但是，如果它们存储在日志中，我们建议您使用 CloudWatch 日志数据保护策略来屏蔽日志中的令牌。有关更多信息，请参阅 [Help protect sensitive log data with masking](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data.html)。

的托管集成 AWS IoT Device Management 不会直接获得访问令牌；而是通过授权码授权类型获得访问令牌。首先，AWS IoT Device Management 的托管集成必须获得授权码。然后，它将代码交换为访问令牌和刷新令牌。刷新令牌用于在旧访问令牌过期时请求新的访问令牌。如果访问令牌和刷新令牌都已过期，则必须再次执行账户关联流程。你可以通过 `StartAccountAssociationRefresh` API 操作来做到这一点。

**重要**  
发放的访问令牌必须按用户划分，但不能按照 OAuth 客户端进行限定。该令牌不应提供对客户端下所有用户的所有设备的访问权限。  
 授权服务器必须执行以下操作之一：  
颁发包含可提取的最终用户（资源所有者）ID 的访问令牌，例如。 JWT-token
返回每个已颁发的访问令牌的最终用户 ID。

## OAuth 配置要求
<a name="oauth-config-requirements"></a>

[下表说明了 AWS IoT Device Management 执行账户关联的托管集成 OAuth 授权服务器所需的参数：](account-linking-flow.md)


**OAuth 服务器参数**  

|  |  |  | 
| --- |--- |--- |
| 字段 | 必填 | 评论 | 
| `clientId` | 是 | 您的应用程序的公共标识符。它用于启动授权流程，并且可以公开共享。 | 
| `clientSecret` | 是 | 用于通过授权服务器对应用程序进行身份验证的密钥，尤其是在使用授权码交换访问令牌时。应将其保密，不得公开共享。 | 
| `authorizationType` | 是 | 此授权配置支持的授权类型。目前，“OAuth 2.0” 是唯一支持的值。 | 
| `authUrl` | 是 | 第三方云提供商的授权 URL。 | 
| `tokenUrl` | 是 | 第三方云提供商的令牌 URL。 | 
| `tokenEndpointAuthenticationScheme` | 是 | “HTTP\_BASIC” 或 “REQUEST\_BODY\_CREDENTIALS” 的身份验证方案。HTTP\_BASIC 表示客户端凭证包含在授权标头中，而阶梯表示它们包含在请求正文中。 | 

必须对您使用的 OAuth 服务器进行配置，使访问令牌字符串值必须使用字符集进行 Base64 编码。 UTF-8 