检查代码实现中使用的 HMAC(散列消息认证码)算法以确保与 AWS 提供的算法相同。另外,请确保您在创建 IAM 身份验证(authorization)策略时正确配置了“iot:AcceptCertificateOwnership”和“iot:Connect”等权限。
以下是一个示例代码片段,用于在 AWS Lambda 中验证身份验证令牌:
import hashlib
import hmac
import json
def decode_token(token):
token_components = token.split(".")
header = json.loads(base64.b64decode(token_components[0]))
payload = json.loads(base64.b64decode(token_components[1]))
signature = token_components[2]
return header, payload, signature
def validate_token_signature(token, secret):
header, payload, signature = decode_token(token)
string_to_sign = token_components[0] + "." + token_components[1]
expected_signature = hmac.new(secret.encode('utf-8'), msg=string_to_sign.encode('utf-8'), digestmod=hashlib.sha256).hexdigest()
return signature == expected_signature
此代码片段中,validate_token_signature
函数可用于验证身份验证令牌的签名。要使用此函数,请将您的密钥作为第二个参数传递给它,如下所示:
token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c.xQNgfIegGqWs2XvP6FXXZ_IHdQyROdJ6bVfZMllmPK4"
secret = "my_secret_key"
if validate_token_signature(token, secret):