【问题标题】:Amazon web service- API Gate way - Custom authorizer using lambda function issue亚马逊网络服务-API 网关-使用 lambda 函数问题的自定义授权方
【发布时间】:2017-01-31 19:15:26
【问题描述】:

我有一个场景,我的服务的调用者将传递一个 JWT(JSON Web 令牌),我想将该值传递给使用 lambda 函数的自定义授权方,以便对其进行解密并将策略返回给策略可以允许或拒绝该用户的调用者。除了在 lambda 完成 JWT 解密后添加标头值。

例如:

  1. 调用者(最终用户)调用服务 serviceX(POST/Get)。
  2. 调用到达 AWS API Gateway
  3. 服务标记为自定义授权方的授权方法
  4. 自定义授权器调用 lambda 函数
  5. Lambda 函数解密 JWT
  6. Lambda 函数添​​加新标头/修改现有标头
  7. 结束服务(serviceX)收到请求

我已经实现了上面所有的例子,除了数字 6,我不能从 lambda 中添加一个新的头值或修改一个现有的值。

我搜索了很多,但找不到方法。

任何来自 AWS 的关于此问题的进一步文档或 sn-ps,我将根据要求提供 - 如果需要 -。

【问题讨论】:

  • 您使用什么作为集成? HTTP、Lambda、另一种 AWS 服务?
  • 我正在使用 HTTP

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


【解决方案1】:

您无法从自定义授权方设置标头。但是,您可以返回可以在 serviceX 函数中使用的值的上下文映射。

所以自定义授权方返回策略和上下文:

{
    "principalId": "yyyyyyyy",
    "policyDocument": {
        ... blah blah ...
    },
    "context": {
        "customvalue": "response-from-number-6"
    }
}

然后就可以在serviceX函数中访问如下属性:

$context.authorizer.customvalue

这是否解决了您从自定义授权方返回值的第 6 个问题?

【讨论】:

  • 您是指在 serviceX 有效负载/正文中使用自定义值吗?并且我已经使用这个前辈在serviceX有效载荷中设置了customvalue,但是我需要使用这个customvalue将它添加到请求头中。你有什么想法如何实现吗?
  • 您可以使用相同的语法$context.authorizer.customvalue 将请求标头的值设置为serviceX
猜你喜欢
  • 2017-04-05
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
  • 2017-11-29
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多