AWS IoT
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

自定义授权方

自定义授权方包含:

名称

一个标识授权方的唯一的任意字符串。

Lambda 函数 ARN

实施身份验证逻辑并返回授权策略的 Lambda 函数的 ARN。

Public key

来自密钥对的公有密钥,用于防止在未经授权的情况下调用授权方的 Lambda 函数。

使用以下命令可生成密钥对:openssl genrsa -out myKeyPair.pem 2048。使用以下命令可从密钥对中提取公有密钥:openssl rsa -in myKeyPair.pem -pubout > mykey.pub

令牌密钥名称

用于从 WebSocket 连接标头提取令牌的密钥名称。

在 Lambda 函数中实施执行身份验证的逻辑。

注意

使用 AWS Lambda 是需要付费的。有关 Lambda 的更多信息,请参阅 AWS Lambda Developer Guide

此函数接受设备所提供的令牌、对设备进行身份验证并返回以下信息:

isAuthenticated

一个布尔值,指示是否已对令牌进行身份验证。如果该值为 false,则忽略响应字段的其余部分。

principalId

正在获取此权限的委托人。

policyDocuments

一个策略列表,指定令牌持有者可执行的操作。

DisconnectAfterInSecs

WebSocket 连接保持打开状态的时间长度 (以秒为单位)。

RefreshAfterInSecs

时间长度 (以秒为单位),经过该时间段后将调用 Lambda 函数以刷新策略。

关联

验证令牌后派生的其他信息。可在 AWS IoT 规则引擎 SQL 语句IAM/AWS IoT 策略变量中提供此信息。

您必须向 AWS IoT 服务委托人授予调用 Lambda 函数 (该函数实施自定义身份验证/授权逻辑) 的权限。可使用以下 CLI 命令执行此操作:

aws lambda add-permission --function-name <lambda_function_name> --statement-id <unique_identifier_string> --action 'lambda:InvokeFunction' --principal iot.amazonaws.com --source-arn arn:aws:iot:<your-aws-region>:<account_id>:authorizer/<authorizer-name>

有关授予调用 Lambda 函数的权限的更多信息,请参阅 AWS Lambda 权限.

您可以设置在连接请求中未包含授权方信息时使用的默认授权方:

aws iot set-default-authorizer --authorizer-name <my-authorizer> --region <your-aws-region> --endpoint <your-iot-endpoint

--source-arn 参数可确保您的 Lambda 函数只能由计划中的自定义授权方调用。