Skip to content

taigamur/oidc_with_alb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

oidc_with_alb

AWS Application Load Balancer (ALB) と OpenID Connect (OIDC) を使用した認証システムを AWS Lambda で実装するためのものです。

概要

このLambda関数は、ALBから転送されたOIDCトークン(JWT)を処理し、ユーザー情報を抽出して返します。ALBはOIDC認証プロバイダー(例:Amazon Cognito、Auth0、Okta)と連携して認証を行い、認証されたリクエストをこのLambda関数に転送します。 今回はGoogleを例に実装します。

仕組み

  1. ユーザーがALBにアクセスすると、ALBはOIDCプロバイダーにリダイレクトして認証を行います
  2. 認証成功後、ALBはリクエストヘッダーに認証情報(x-amzn-oidc-data)を含めてLambda関数にリクエストを転送します
  3. Lambda関数は、ヘッダーからIDトークン(JWT)を抽出し、デコードしてユーザー情報を取得します
  4. 取得したユーザー情報(メールアドレス、名前、サブジェクト)をJSON形式で返します

参考

デプロイ手順

Gooleの認証情報の設定

  • 「Google Auth Platform」 → 「クライアント」→ 「CREATE CLIENT」
  • OAuthクライアントIDを作成
    • リダイレクトURI:https://<domain>/oauth2/idpresponse
  • クライアントID, クライアントシークレットを保管(JSONでダンロード)

ALBの設定

  1. AWSマネジメントコンソールでEC2サービスに移動します
  2. 左側のメニューから「ロードバランサー」を選択します
  3. 「ロードバランサーの作成」ボタンをクリックし、「Application Load Balancer」を選択します
  4. 基本的な設定(名前、リスナー、アベイラビリティゾーンなど)を行います
  5. セキュリティグループを設定します
  6. ターゲットグループを作成し、Lambda関数を指定します
  7. 「認証」タブで、「認証の追加」を選択します
  8. OIDCプロバイダーの情報を入力します:
    • アイデンティティプロバイダー:OIDC(OpenID Connect)
    • 発行者のURL:https://accounts.google.com
    • 認証エンドポイント:https://accounts.google.com/o/oauth2/v2/auth
    • トークンエンドポイント:https://oauth2.googleapis.com/token
    • ユーザー情報エンドポイント:https://openidconnect.googleapis.com/v1/userinfo
    • クライアントID:各自の値
    • クライアントシークレット:各自の値
  9. 「作成」ボタンをクリックします

参考

Lambda関数のデプロイ

  1. lambda関数を作成(例:oidc-with-alb-lambda)
  2. コードでlambda_function.pyを作成し、同ファイルの内容をコピペ
  3. コード → ランタイム設定 でハンドラをlambda_function.handlerに設定する

メモ

JWTの構成は?

Header, Payload, Signature の構成 Header:どのアルゴリズムで署名しているかなど。 Payload:ユーザー情報が入っている部分。Base64にエンコードされている。 Signature:上2つに署名をつけたもの。公開鍵で署名を検証できる。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages