本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
了解自定义身份验证工作流
自定义身份验证使您能够定义如何通过使用授权方资源对客户端进行身份验证和授权。 每个授权方都包含对客户托管的 Lambda 函数的引用、用于验证设备凭证的可选公有密钥以及其它配置信息。下图说明了 Amazon IoT Core中自定义身份验证的授权工作流。
Amazon IoT Core 自定义身份验证和授权工作流程
下面的列表说明了自定义身份验证和授权工作流中的每个步骤。
-
设备使用其中一种支持 Amazon IoT Core 的数据端点连接到客户的数据端点设备通信协议。设备在请求的标头字段或查询参数(适用于 HTTP 发布或 MQTT over WebSockets 协议)或 MQTT CONNECT 消息的用户名和密码字段(适用于基于协议的 MQTT 和 MQTT)中传递证书。 WebSockets
-
Amazon IoT Core 检查以下两个条件之一:
-
传入的请求指定授权方。
-
接收请求 Amazon IoT Core 的数据端点已为其配置了默认授权器。
如果通过上述任一方式 Amazon IoT Core 找到授权方,则 Amazon IoT Core 触发与该授权方关联的 Lambda 函数。
-
-
(可选)如果您已启用令牌签名,则在触发 Lambda 函数之前,使用存储在授权方中的公钥 Amazon IoT Core 验证请求签名。如果验证失败, Amazon IoT Core 将停止请求而不调用 Lambda 函数。
-
Lambda 函数接收请求中的凭证和连接元数据,并做出身份验证决策。
-
Lambda 函数返回身份验证决策的结果和指定连接中允许执行哪些操作的 Amazon IoT Core 策略文档。Lambda 函数还返回信息,指定通过调用 Lambda 函数对请求中的证书进行 Amazon IoT Core 重新验证的频率。
-
Amazon IoT Core 根据从 Lambda 函数收到的策略评估连接上的活动。
-
在建立连接并首次调用您的自定义授权方 Lambda 之后,空闲连接上的下一次调用可能会延迟最多 5 分钟,且不执行任何 MQTT 操作。之后,后续调用将遵循您的自定义授权方 Lambda 中的刷新间隔。这种方法可以防止过度调用,从而可能超过您的 Lambda 并发限制。 Amazon Web Services 账户
扩展注意事项
由于 Lambda 函数为您的授权方处理身份验证和授权,因此该函数受 Lambda 定价和服务限制的约束,例如并发执行率。有关 Lambda 定价的更多信息,请参阅 Lambda 定价refreshAfterInSeconds 和 disconnectAfterInSeconds 参数管理您 Lambda 函数上的有效载荷。有关 Lambda 函数响应内容的更多信息,请参阅 定义您的 Lambda 函数。
注意
如果启用签名,则可以防止无法识别的客户端过度触发 Lambda。在禁用授权方的签名之前,请考虑这一点。
注意
自定义授权方的 Lambda 函数超时限制为 5 秒。