AWS IoT
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 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 的定价的信息,请参阅 AWS Lambda 定价。有关 Lambda 的更多信息,请参阅 AWS Lambda Developer Guide

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

isAuthenticated

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

principalId

一个字母数字字符串;最小长度为 1 个字符,最大长度为 128 个字符。该字符串充当与在自定义授权请求中发送的令牌关联的标识符。

policyDocuments

JSON 格式的策略文档列表,遵循与 AWS IoT 策略相同的约定。该列表最多包含 10 个策略文档,每个文档最多包含 2048 个字符。

DisconnectAfterInSecs

与 AWS IoT 网关的连接的最大持续时间(以秒为单位),超出该时间后将断开连接。最小值为 300 秒,最大值为 86400 秒。

RefreshAfterInSecs

策略刷新的间隔时间。经过该时间后,AWS 策略引擎会重新评估策略文档,AWS IoT 设备网关会再次调用 Lambda 函数以实现策略更改。最小值为 300 秒,最大值为 86400 秒。

上下文

验证令牌后派生的其他信息。可在 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>
function-name

向其授予调用权限的 Lambda 函数的名称。

statement-id

语句标识符。

action

授予执行权限的 Lambda 操作。

principal

向其授予权限的委托人。

source-arn

自定义授权方的 ARN。指定此值可确保您的 Lambda 函数只能由预期的自定义授权方调用。

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

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

aws iot set-default-authorizer --authorizer-name <my-authorizer>