0

私はCognito User Pool AuthorizerでAPIゲートウェイを使用しており、クライアント側ReST呼び出しからIdTokenをAuthorization Headerに渡しています。API Gateway with Cognito User Pool AuthorizerとLambda

正常に動作しています。

ラムダではcognitoIdentityIdが必要です。それは、(イベントまたはコンテキストで)identityidを送信しないし、またそれが変換アプリケーション/ JSON

{ 
"cognito-identity" : "$context.identity.cognitoIdentityId" 
} 

- APIゲートウェイ

コンテンツタイプに統合要求にボディテンプレートのマッピングを試みた

私のペイロードはこのjsonにしかない。

ペイロードをそのまま使用して、このシナリオのラムダでidentityidを取得するにはどうすればよいですか?

答えて

4

Cognito IDは、Cognito ID資格情報を使用する場合にのみ利用できます。あなたがアドレッシャーを介して許可されたCognito User Poolユーザーに関する情報を入手したい場合は、context.authorizer.claims mapで利用可能になります。

詳細はthis documentationを参照してください。

また、この値をラムダ関数で使用できるようにするには、event.requestConext.authorizer.claimsマップ(ラムダプロキシ統合を使用している場合)またはマップを選択した場所マッピングテンプレートを使用します(プロキシ統合を使用していない場合)。

+0

プロキシ統合を設定した後、 event.requestContext.identity.cognitoIdentityIdをnullにしています。私は電子メール、サブ、audなどの他の値をオーサライザで取得していますが。 まあ、私はちょうど、郵便番号のAuthorizationヘッダーにidTokenを渡しています。そして、私はクライアントサイドのAWS-SDKをCognitoに使用するつもりはありません。 マイセットアップこのフォーラムの投稿で説明したとおりである。 https://forums.aws.amazon.com/thread.jspa?threadID=252838 私の目標は、私は一時的な秘密鍵を取得することができるようにidentityIdを取得することで、 cognitoidentityにおけるgetCredentialsForIdentityからのaccessKey – dan

+0

また、Cognito User Pool Authorizerを使用している場合、cognitoIdentityIdは決して満たされません。 –

+0

このアーキテクチャでidentityIdを取得する方法は?または、この方法で一時的なsecretKeyとaccessKeyを取得する方法は?そして、私はちょうど興味があります - あなたが私たちを制限する理由 - 「Cognito User Pool Authorizerを使用している場合、cognitoIdentityIdは決して満たされません」 – dan

2

CognitoIdentityIdは、Federated Identity Poolです。アイデンティティIDが必要な場合は、IDプールをAWS Cognito User PoolAWS Cognito Federated Identitiesに作成する必要があります。 Click here

次に、JWT Tokens (IdToken, AccessToken and RefreshToken)を返すUserPoolユーザーを認証する必要があります。このIdTokenを使用して、メソッドCognito Federated Identities APIを呼び出してIdentityIdを取得することができます。

+0

しかし、いくつかの統合要求マッピングテンプレートを通して私のラムダにCognito IDを取得する方法はありませんか? –

関連する問題