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

配置自定义授权方

  1. 创建一个实现身份验证/授权逻辑的 Lambda 函数 (例如,以下步骤中的 MyAuthorizerFunction)。以下是自定义授权 Lambda 功能可能返回的结果的示例:

    { "isAuthenticated": true, "principalId": "xxxxxxxx", "disconnectAfterInSeconds": 86400, "refreshAfterInSeconds": 300, "policyDocuments": [ "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":\"...\",\"Effect\":\"Allow|Deny\",\"Resource\":\"...\"}]}" ], "context": { "username": "johnDoe123", "city": "Seattle", "country": "USA" } }

    Lambda 函数的返回值应类似于上述内容。它可以是 JSON 序列化或非序列化对象。

  2. 使用 create-authorizer API 将自定义授权方注册到 AWS IoT。

    aws iot create-authorizer --authorizer-name MyAuthorizer --authorizer-function-arn arn:aws:lambda:us-west-2:<account_id>:function:MyAuthorizerFunction // Lambda ARN --token-key-name MyAuthorizerToken // Key use to extract token from headers --token-signing-public-keys FIRST_KEY= // Public key used to verify token signature "-----BEGIN PUBLIC KEY----- [...insert your public key here...] -----END PUBLIC KEY-----" --status ACTIVE // Authorizer status - must be ACTIVE --region us-west-2 // AWS region --endpoint https://us-west-2.iot.amazonaws.com // IoT endpoint

    test-invoke-authorizer API 可用于测试是否已正确配置自定义授权方 Lambda 函数,如下所示:

    aws iot test-invoke-authorizer --authorizer-name <NAME_OF_AUTHORIZER> --token <TOKEN_VALUE> --token-signature <TOKEN_SIGNATURE>

    注意

    <TOKEN_SIGNATURE> 必须使用上传至在 create-authorizer 调用中使用的 AWS IoT 的公有/私有密钥对的私有密钥签名。在本地从类似 UNIX 的命令行创建 <TOKEN_SIGNATURE> 的一种方法如下所示:

    echo -n <TOKEN_VALUE> | openssl dgst -sha256 -sign <PRIVATE_KEY> | openssl base64

    在将 <TOKEN_SIGNATURE> 值传递给 test-invoke-authorizer API 之前,必须从前面命令的结果中微调所有换行符。