API网关授权者接受ID_token但不接受Access_Token

时间:2018-11-16 21:51:55

标签: amazon-web-services amazon-s3 amazon-cognito

我正在使用API​​网关和授权器来控制对S3存储桶中文件夹的访问。授权者配置为使用Cognito用户池。此用户池具有与之关联的OAuth范围phoneemail,还有一个自定义范围,我打算向其授予对S3存储桶的读取访问权限。

但是,我发现授权者将仅接受ID令牌来授予访问权限,并且如果我通过访问令牌,则会返回未授权状态。根据{{​​3}},应该可以使用访问令牌。

在请求访问令牌时,我遵循了Amazon docs的指示,例如,我像这样设置auth变量:

var authData = {
        ClientId : '<removed>', 
        AppWebDomain : '<removed',
        TokenScopesArray : ['openid','email', 'domain.com/content/content.read'], 
        RedirectUriSignIn : '<removed>',
        RedirectUriSignOut : '<removed'
    }

我以为访问令牌将是我所需要的,这就是它的目的,但我无法使其正常工作。

2 个答案:

答案 0 :(得分:2)

如果要将API网关与访问令牌一起使用,则必须跳过一些额外的步骤。

有关详细信息,请查看“ Integrate an API with a User Pool”,尤其是<在方法上配置COGNITO_USER_POOLS授权者的部分。

具体来说,从方法请求的设置>授权中:

  
      
  • 选择OAuth范围旁边的铅笔图标。

  •   
  • 键入创建Amazon Cognito用户池时已配置的范围的一个或多个全名。例如,按照   创建Amazon Cognito用户池(范围之一)中给出的示例   是com.hamuta.movi​​es / drama.view。用一个空格分开   多个范围。

  •   
  • 要保存设置,请选择复选标记图标。

  •   

答案 1 :(得分:0)

要使 access_token 与 GW API 配合使用:

Cognito 用户池 OAuth 2.0 设置如下

enter image description here

在网关 API 方法执行中使用以下设置

enter image description here