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