一个非常基本的方案,我想在Graphql操场上测试AppSync突变,该突变与API密钥身份验证可以很好地工作。
除了API密钥身份验证之外,我还附加了一个附加的授权提供程序。
突变:
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
。
答案 0 :(得分:0)
我必须在类型@aws_cognito_user_pools
上添加Prediction
和我的突变。
type Prediction @aws_cognito_user_pools {
gameID
gamePitchID
}
此外,在Cognito中,我必须像这样使用idToken:
{
"Authorization": "xxxxxxxxxx"
}
请注意Bearer
丢失了。