Skip to content

ITP-system/cognito-lambda-edge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CloudFront/Lambda@Edge/Cognito で 静的サイト や SPA/SSR サイトを保護する

CloudFront/Lambda@Edge/Cognito で 静的サイト や SPA/SSR サイトを保護する方法は以下で紹介されていますが、

全て ログインページに Hosted UI を使用する前提となっています。

Hosted UI を使わずに ログインページを独自に開発する場合の lambda@edge について、まとめてあります。

概要

静的サイトや SPA・SSR サイトの Viewer リクエストに関連づけられた lambda@edge で以下を行いアクセスを許可します。

  • Cookie に保存された Id トークンが有効期限がきれていなく有効な署名であることを照合する
  • Id トークンの有効期限がきれていたら、Cookie に保存されたリフレッシュトークンを使用して Id トークンを再発行する

上記に問題が発生したら、アクセスを許可せず、

  • ログイン画面 にリダイレクトさせる

デプロイ

  • Cognito の 作成

    $ aws cloudformation deploy --template ./template/cognito.yaml --stack-name AuthCognitoStack-dev --capabilities CAPABILITY_NAMED_IAM
    
  • Lambda Edge、ログイン画面、アプリケーションのデプロイ

    Cognito のユーザプール id などを cdk.json に設定して、デプロイします

    npm --prefix ./cdk run cdk deploy -c stage=dev --all

  • CloudFront の 作成

    Lambda edge のバージョン指定を入力して CloudFront をデプロイします。

    $ aws cloudformation deploy --template ./template/contents.yaml --stack-name AuthContentsStack-dev --capabilities CAPABILITY_NAMED_IAM
    

削除

  • CloudFront から Lambda Edge の登録をはずします
  • CloudFront のスタックを削除します
  • cdk destroy -c stage=dev --allで Lambda などを削除します
  • Cognito のスタックを削除します

補足

  • Id トークンの照合は、AWS 提供の aws-jwt-verify を使用する
  • Id トークンの再発行は、OAuth 2.0 トークンエンドポイントを使用する (OAuth 2.0 PKCE フローではありません)

リファレンス

  1. Verifying a JSON Web Token

  2. AWS JWT Verify

  3. CloudFront Lambda@Edge

  4. Token endpoint

注意

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published