2017-09-21 10 views
5

awg api gateway authorizerをcognitoユーザープールで使用しようとしています。 aws api gateway consoleを使ってテストすると正常に動作しています。AWS Api Gateway Authorizer + Cognitoユーザープールが動作しない{"message": "Unauthorized"}

しかし、私は、APIの認証を有効にしてみたときに、それは"message": "Unauthorized".は、スクリーンショットの下に

API Gatewayのコンソールのスクリーンショットを確認してくださいと言う - これは細かい enter image description here

ポストマンのスクリーンショットを作品 - enter image description here

を動作していません

誰かが助けてくれますか?ここhttp://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html

+0

'cognito:username'ではなく' username'ですか?私はその正確な方法を使っていませんが、その部分が正しいかどうかはわかりません。 –

+1

cognito:usernameは、認証に成功するための回答です。私もカスタムのために同じタイプの問題を認める。愚かなことをしているのは確かですが、それは分かりません。もし誰かがそれを助けることができれば.. –

+0

申し訳ありませんが、私はあなたのコードに誤りがあります。郵便配達員は、応答に12のヘッダーがあると言っています。あなたはそれらを投稿できますか? –

答えて

1

を述べたように

はFYI私はあなたのような同じ問題を持っていたし、私が間違ってトークンソースを入力したことを実現指示に従ってきました。

<your API> -> Authorizers -> Token Sourceには、APIゲートウェイがトークンを検索する必要があるHTTPヘッダーの名前を入力します。 (お客様のケースではAuthorization

テストする前に保存してください。テストする前に展開してください。

enter image description here

+0

FYI私のように認証を与えている知っているだろうトークンのソースもAPIを配備し、同じ問題に直面しています。 –

2

私はマティアスのソリューションを試し、それが最初では動作しませんでした。奇妙なことに、後で数時間後にもう一度やり直してみることができました。今回は、APIを導入する前にAPIゲートウェイにいくつか変更を加えました。今回は、私が作った他の変更は面白かったにもかかわらず、うまくいった。

また、よくあることですが、method.response.header.Authorizationを使用する必要があることを示すAWSドキュメントは間違っています。これは実際にカスタム認証を使用するLambdasに対してのみ有効です。新しいCognito User Pool Authorizerを使用している場合は、実際にはちょうどAuthorizationを使用する必要があります。

  1. 使用Authorizationないmethod.response.header.Authorization
  2. APIゲートウェイでのリソースへの表面的な変更
  3. があなたのAPIを展開し、二

を待ってください - 編集 -

を私がしました私のスタックをCloudformに変換するだけで、Cloudformを使用してAuthorizerをデプロイする場合、実際には完全なを指定する必要があることがわかりましたトークンソースの場合は。実際に、そのフォーマットを使用しないと、スタックのデプロイは失敗します。ただし、一度展開すると、コンソールでAuthorizerを見ると、method.response.headerの部分が削除されます。

関連する問題