2017-09-08 14 views
-1

AWS Lambda + Cognito(ユーザープール+フェデレーションID)+ APIゲートウェイを使用します。ユーザーはWEBアプリケーションでamazon-cognito-identity-jsで認証し、aws-api-gateway-clientでAPIを呼び出します。 APIゲートウェイメソッドには、AWS_IAMオーソライザがあります。ラムダ関数のユーザプールからユーザ名を取得する方法は?AWS Lambdaで現在のユーザー名を取得する方法は?

+0

これは以前の投稿とどのように異なる質問ですか? https://stackoverflow.com/questions/46120881/how-to-get-cognito-user-in-aws-lambda https://stackoverflow.com/questions/46108431/using-aws-lambda-with-cognito- and-api-gateway –

+0

関連:https://stackoverflow.com/questions/37963906/how-to-get-user-attributes-username-email-etc-using-cognito-identity-id – jarmod

+0

@マークB削除しましたその投稿 – Ildar

答えて

0

ラムダ関数に送信されたリクエストをaws-api-gateway-clientで変更して、ヘッダーにJWT AccessTokenを渡します。 ensure your API gateway is configured to pass headersが必要な場合があります。

このトークンは、外部サービスの共有秘密情報を使用して暗号化する必要があります。ラムダハンドラ関数でデコードする必要があります。

apigClient.invokeApi(
    params, 
    pathTemplate, 
    method, 
    { { headers: { accessToken } } }, 
    body); 

なお、私たちはユーザーのためのその他の詳細については気にされていないので、using the AccessToken makes sense here

AccessTokenは、amazon-cognito-identity-jsを使用して認証後に取得されます。

ラムダハンドラ関数でリクエストのヘッダーからこのフィールドを解析できます。

import { util } from 'aws-sdk/global'; 

exports.handler = function(event, context) { 
    // parse access Token from request header 
    const headers = event.headers; 
    const payload = headers.accessToken.split('.')[1]; 

    const { username } = JSON.parse(
    util.base64.decode(
     payload 
    ) 
    .toString('utf8') 
); 

    ... 
}; 
関連する問題