AWS IoT
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

自定义授权方

自定义授权方包含:

名称

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

Lambda 函数 ARN

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

公有密钥

来自密钥对的公有密钥,用于防止在未经授权的情况下调用授权方的 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,则忽略响应字段的其余部分。

策略

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

DisconnectAfterInSecs

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

RefreshAfterInSecs

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

关联

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

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

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

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

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

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

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