了解自定义身份验证工作流 - Amazon IoT Core
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

了解自定义身份验证工作流

自定义身份验证使您能够定义如何通过使用授权方资源对客户端进行身份验证和授权。  每个授权方都包含对客户托管的 Lambda 函数的引用、用于验证设备凭证的可选公有密钥以及其他配置信息。下图说明了 Amazon IoT Core 中自定义身份验证的授权工作流。

Amazon IoT Core 自定义身份验证和授权工作流

下面的列表说明了自定义身份验证和授权工作流中的每个步骤。

  1. 设备使用支持的 设备通信协议 之一连接到客户的 Amazon IoT Core 数据端点。设备在请求的标头字段或查询参数(适用于 HTTP Publish 或通过 WebSockets 协议的 MQTT)或 MQTT CONNECT 消息的用户名和密码字段中传递凭证(适用于 MQTT 和 MQTT 通过 WebSockets 协议的 MQTT)。

  2. Amazon IoT Core 检查以下两个条件之一:

    • 传入的请求指定授权方。

    • 接收请求的 Amazon IoT Core 数据端点具有已为其配置的默认授权方。

    如果 Amazon IoT Core 以上任一方式查找授权方, Amazon IoT Core 将触发与授权方关联的 Lambda 函数。

  3. (可选)如果您已启用令牌签名, Amazon IoT Core 在触发 Lambda 函数之前,将通过使用存储在授权方中的公有密钥来验证请求签名。如果验证失败, Amazon IoT Core 将停止请求而不调用 Lambda 函数。 

  4. Lambda 函数接收请求中的凭证和连接元数据,并做出身份验证决策。

  5. Lambda 函数返回身份验证决策的结果以及 Amazon IoT Core 策略文档,该文档指定允许在连接中执行哪些操作。Lambda 函数还通过调用 Lambda 函数返回指定 Amazon IoT Core 重新验证请求中凭据的频率。

  6. Amazon IoT Core 根据从 Lambda 函数接收的策略评估连接上的活动。

扩展注意事项

由于 Lambda 函数为您的授权方处理身份验证和授权,因此该函数受 Lambda 定价和服务限制的约束,例如并发执行率。有关 Lambda 定价的更多信息,请参阅 Lambda 定价。您可以通过调整 Lambda 函数响应中的 refreshAfterInSecondsdisconnectAfterInSeconds 参数管理您 Lambda 函数上的负载。有关 Lambda 函数响应内容的更多信息,请参阅 定义您的 Lambda 函数

注意

如果启用签名,则可以防止无法识别的客户端过度触发 Lambda。在禁用授权方的签名之前,请考虑这一点。