2017-01-30 76 views
1

我有一个场景,我的服务的调用者将通过JWT(JSON Web令牌),并且我想将该值传递给自定义授权者它使用lambda函数来解密它并将策略返回给该调用方,策略可以允许该用户或拒绝该策略。另外在lambda完成JWT解密之后添加一个头部值。亚马逊网络服务 - API Gate的方式 - 使用lambda函数问题的自定义授权者

例如:

  1. 呼叫者(最终用户)调用服务serviceX(POST /获取)。
  2. 呼叫到达AWS API网关
  3. 服务标记为这是自授权
  4. 授权的方法
  5. 定制认证器调用lambda函数
  6. lambda函数解密JWT
  7. lambda函数增加了一个新的头/修改现有一个
  8. 端服务(serviceX)接收

我已经实现除了NUM所有上述示例中的请求我不能从lambda中添加新的标题值或修改现有的标题值。

我搜查了很多,我找不到这样做的方法。

来自AWS的关于此问题的任何进一步文档或摘录我将通过请求 - 如果需要 - 提供它。

+0

你在使用什么作为集成? HTTP,Lambda,另一个AWS服务? –

+0

我正在使用HTTP –

回答

1

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

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

然后你就可以访问它在serviceX功能在以下属性:

$context.authorizer.customvalue 

这是否解决您的号码

所以自定义授权与上下文一起返回策略6从自定义授权者返回值?

+0

您是否指的是使用serviceX有效内容/正文中的自定义值?我已经使用这个高级来设置serviceX有效载荷中的自定义值,但是我需要使用这个自定义值将它添加到请求标头中。你有什么想法如何实现这个? –

+0

您可以使用相同的语法'$ context.authorizer.customvalue'将请求标头的值设置为serviceX –