【问题标题】:AWS API Gateway custom authorizer. How to access principalId in lambdaAWS API Gateway 自定义授权方。如何在 lambda 中访问 principalId
【发布时间】:2018-01-28 16:46:39
【问题描述】:

所以我正在尝试在 API Gateway 中设置自定义授权方。

我可以让它将带有有效令牌的请求转发到 API 方法中指定的 lambda 函数。我不知道如何访问我的授权人传递的 principalId。

执行请求时,我在 Cloud watch 日志中得到以下信息:

Authorizer result body before parsing:
{
  "principalId": "16",
  "policyDocument": {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Condition": {},
        "Action": "execute-api:Invoke",
        "Resource": [
          "arn:aws:execute-api:eu-central-1:****:***/null/*/*"
        ],
        "Effect": "Allow"
      },
      {
        "Condition": {},
        "Action": "execute-api:Invoke",
        "Resource": [],
        "Effect": "Deny"
      }
    ]
  }
}

那么如何在我的 lambda 函数中访问 principalId?该对象是否甚至传递给 lambda?如果不是,我如何至少让 principalId 通过?

【问题讨论】:

    标签: java api amazon-web-services lambda aws-api-gateway


    【解决方案1】:

    principalId 可以(并且默认情况下)转发到 Lambda 实现。根据您的映射,principalId 应该出现在上下文变量中。

    您可以使用 $context.authorizer.principalId 变量访问映射模板中的 principalId 值。如果您想将值传递给后端,这很有用。有关详细信息,请参阅访问 $context 变量。

    Use API Gateway Custom Authorizers

    【讨论】:

    • 谢谢。我没有任何映射,现在工作正常。
    猜你喜欢
    • 2017-05-20
    • 2020-06-17
    • 1970-01-01
    • 2017-05-18
    • 2016-11-30
    • 2018-01-15
    • 2019-12-28
    • 2019-03-04
    • 2018-04-17
    相关资源
    最近更新 更多