使用Graphql Playground上的AWS Cognito用户池对AppSync突变进行身份验证

时间:2020-06-10 19:07:05

标签: graphql aws-appsync

一个非常基本的方案,我想在Graphql操场上测试AppSync突变,该突变与API密钥身份验证可以很好地工作。

除了API密钥身份验证之外,我还附加了一个附加的授权提供程序。

screenshot for additional authorization

突变:

type Mutation {
  createPitch(gameID: ID!, pitchID: Int!, pitchEvent: PitchInput!): Pitch
    @aws_api_key
  predictPitch(userID: String!, gamePitchID: String!, prediction: PredictionInput): Prediction
    @aws_cognito_user_pools
}

在graphql操场上调用predictPitch突变:

mutation PredictPitch($prediction:PredictionInput) {
  predictPitch(userID: "12345", gamePitchID: "29fb2xx-xxxxx-xxxxx-1", 
  prediction: $prediction ) {
    gameID
    gamePitchID
  }
}

查询变量:

{
  "prediction": {
    "gameID": "29",
    "hitterGuess": "Miss",
    "pitcherGuess": "Fastball"
  }
}

标题:


{
  "X-API-KEY": "da2-o6fs2lq47vbehexxxxxxxx",
  "Authorization": "Bearer xxxx-the-pretty-long-jwt-token-from-cognito login"
}

我尝试单独使用Authorization标头,并与x-api-key一起使用。 到目前为止没有任何工作。我敢肯定我会遗漏一点点。

{
  "error": {
    "errors": [
      {
        "errorType": "UnauthorizedException",
        "message": "Valid authorization header not provided."
      }
    ]
  }
}

注意:JWT令牌AccessToken是通过aws-cli生成的 aws cognito-idp admin-initiate-auth

1 个答案:

答案 0 :(得分:0)

我必须在类型@aws_cognito_user_pools上添加Prediction和我的突变。

type Prediction @aws_cognito_user_pools {
   gameID
   gamePitchID
}

此外,在Cognito中,我必须像这样使用idToken:

{
   "Authorization": "xxxxxxxxxx"
}

请注意Bearer丢失了。