Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9409

ALB + Lambdaでお手軽3分ベーシック認証

$
0
0

概要

ALBのリスナールールの変更とLambdaの追加でベーシック認証を行います。

ベーシック認証の処理の流れとしては以下となります。

  • ALBでAuthorizationヘッダーを検証する
  • 認証OKであれば、正規のターゲットグループに転送する
  • 認証NGであれば、Lambdaをターゲットとするターゲットグループに転送する
  • Lambdaではベーシック認証を要求するレスポンスを返す(なお、ALBからのヘルスチェックに対しては200を返すようにします)

1. Lambda関数の作成

まず、ALBが存在するリージョンで、Lambda関数を作成します。

  • 一から作成を選択
  • 関数名を入力(今回はBasicAuthとします)
  • ランタイムはNode.js 12.xを選択
  • 実行ロールは基本的な Lambda アクセス権限で新しいロールを作成を選択
  • VPCは特に何も選択しない
  • 関数の作成ボタンを押下

Lambda関数の作成

  • index.jsに以下のコードを貼り付けて、Deployボタンを押下

Authorizationヘッダーの検証はALBで実施するため、コード中には検証処理はありません。

exports.handler=async(event,context)=>{constheaders=event.headers||{};// ALB Health checkif(headers['user-agent']==='ELB-HealthChecker/2.0'){return{statusCode:200,statusDescription:'200 OK',isBase64Encoded:false,headers:{'Content-Type':'text/html'}};}return{statusCode:401,statusDescription:'401 Unauthorized',body:'Unauthorized',isBase64Encoded:false,headers:{'WWW-Authenticate':'Basic','Content-Type':'text/html'}};};

コードの貼り付けとDeployボタン押下

2. ターゲットグループの作成

先ほどのLambda関数をターゲットとするターゲットグループを作成します。

2.1. 基本的な設定等

  • ターゲットタイプにLambda関数を選択
  • ターゲットグループ名を入力(今回はbasic-authとします)
  • ヘルスチェックの有効化をチェック
  • 次へボタンを押下

ターゲットグループの作成1

2.2. ターゲットの登録

  • 先ほど作ったLambda関数を選択
  • ターゲットグループの作成ボタンを押下

ターゲットグループの作成2

3. ALBのリスナールールの編集

3.1. ルールの表示/編集

  • ALBのリスナータブを選択し、ルールの表示/編集を押下

ルールの表示/編集

3.2. ルールの挿入

  • 画面上部の+ボタンを押下
  • ルールの挿入を押下
  • IFの箇所で`HTTPヘッダーを選択
    • ヘッダーにAuthorizationを入力
    • 値にBasic {ID:パスワードをBase64エンコードした値}を入力(Basicの次にスペースを入れること)
    • Base64エンコード方法は以下を参照(IDがhogehoge, パスワードがfugafugaの場合)
$echo-n'hogehoge:fugafuga' | base64aG9nZWhvZ2U6ZnVnYWZ1Z2E=
  • THENの箇所で、転送先として正規のターゲットグループを選択
  • 保存ボタンを押下

ルールの挿入

3.3. 最後のルールの転送先をLambda関数にする

  • 画面上部のペンのアイコンを押下
  • 最後のルールの左側に表示されているペンのアイコンを押下
  • THENに表示されているペンのアイコンを押下
  • 転送先として先ほど作成したターゲットグループを選択
  • 更新ボタンを押下

最後のルールの転送先をLambda関数にする

4. ベーシック認証の表示確認

以上の設定を終えて目的のサイトにアクセスすると、ベーシック認証がかかるようになります🎉

ベーシック認証の表示

参考


Viewing all articles
Browse latest Browse all 9409

Trending Articles