postman 部署CF模板后,AWS Cognito用户池需要在控制台中手动保存

ljsrvy3e  于 2023-06-22  发布在  Postman
关注(0)|答案(1)|浏览(100)

当在PostMan中测试我的TOKEN端点时,我得到错误HTTP 400 -“invalid_grant”。
在PostMan中,我配置了Authorization头(w/BasicclientId:secret)和头Content_Type。在URL编码的形式中,我设置了grant_type = client_credentials。所有这些设置都在此处的说明中得到确认:https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html
手动检查后,我的CloudFormation模板正确部署了所有设置。
如果我进入Cognito设置,从导航中选择App Clients,然后“保存app clients changes”而不做任何更改,我不再在PostMan中得到相同的错误,我可以从中检索有效的访问代码。这几乎是因为更改在AWS中不“活动”,除非我出于任何原因重新保存在AWS控制台中。
是不是有些东西没有在AWS后端完全提交,除非我在控制台中手动点击保存?

**同样,这个模板,设置和PostMan测试确实有效,但只有在我进入Cognito并进行编辑,保存,撤销我的编辑并再次保存之后。

这是我的CF模板

AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: Integration for webSvc1 and webSvc2

Parameters:
  StageName:
 ...

Globals:
  Function:
    Timeout: 20
  Api:
    OpenApiVersion: 3.0.1    

Resources:

  UserPool:
    Type: 'AWS::Cognito::UserPool'
    Properties:
        UserPoolName: !Sub ${CognitoUserPoolName}-${EnvironmentName}
  
  UserPoolResourceServer:
    Type: 'AWS::Cognito::UserPoolResourceServer'
    DependsOn:
    - UserPool    
    Properties: 
      Identifier: !Sub ${CognitoUserPoolName}-${EnvironmentName}
      Name: api-resource-server
      Scopes: 
        - ScopeName: "api.read"
          ScopeDescription: "Read access"
      UserPoolId: !Ref UserPool

  UserPoolDomain: 
    Type: AWS::Cognito::UserPoolDomain 
    DependsOn:
    - UserPool
    - UserPoolResourceServer    
    Properties:
      UserPoolId: !Ref UserPool
      Domain: !Sub id-${EnvironmentName}

  # Creates a User Pool Client to be used by the identity pool
  UserPoolClient:
    Type: 'AWS::Cognito::UserPoolClient'
    DependsOn:
    - UserPool
    - UserPoolResourceServer
    Properties:
      ClientName: !Sub ${CognitoUserPoolName}-client-${EnvironmentName}
      GenerateSecret: true
      UserPoolId: !Ref UserPool
      SupportedIdentityProviders:
        - COGNITO      
      AllowedOAuthFlows:
        - client_credentials
      AllowedOAuthScopes:
        - !Sub ${CognitoUserPoolName}-${EnvironmentName}/api.read
332nm8kg

332nm8kg1#

我迟到了,但我希望这对其他人有帮助。
我也面临着同样的问题。
根据AWS支持,您需要启用AllowedOAuthFlowsUserPoolClient设置,即从UI设置为true,从API设置为false
成功了!

相关问题