自定义授权方 - 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 函数中实施执行身份验证的逻辑。

注意

我们将根据您 Lambda 函数的请求数量和持续时间,以及代码执行花费的时间向您收费。有关 AWS Lambda 的更多信息,请参阅 AWS Lambda 定价AWS Lambda Developer Guide

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

isAuthenticated

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

principalId

已授予 policyDocuments 中描述的权限的委托人的 ID。

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 函数(该函数可实施自定义身份验证/授权逻辑)的权限。您可使用以下 AWS 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

add-permission 命令使用以下参数:

function-name

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

statement-id

语句标识符。

action

授予执行权限的 Lambda 操作。

principal

向其授予权限的委托人。

source-arn

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

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

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

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