⚠️ 記事内に広告を含みます。

CloudFrontでBasic認証を設定する方法

cloudfrontでBasic認証を設定

CloudFrontでBasic認証を設定する方法を紹介します。

CloudFront FunctionsでBasic認証を設定する方法

CloudFrontを利用時はオリジン側でBasic認証をいれてもそのままではCloudFront側で応答してしまい、Basic認証が有効にならないです。

ビューワからのリクエスト時に実行できるCloudFront FunctionsでBasic認証を導入する方法を紹介します。

CloudFront Functionsについては以下の記事でも紹介しています。

cloudfrontFucntionsでIP制限とBotBlockする方法CloudFront functionでIPやユーザエージェントを元にアクセス制御を行う

Basic認証を導入する関数の作成

CloudFront Functionsはjavascritptで書きます。

CloudFrontで関数をクリックして新しい関数を作成しましょう。

以下のコードを入力して関数を保存、発行して関連するディストリビューションに設定しましょう。

function handler(event) {
  var request = event.request;
  var headers = request.headers;
  var userpass = 'hogehoge:fugafuga';
  var authString = "Basic " +  userpass.toString('base64');
  // var authString = "Basic aG9nZWhvZ2U6ZnVnYWZ1Z2E=" というように予めエンコードしてもよい

  if (
    typeof headers.authorization === "undefined" ||
    headers.authorization.value !== authString
  ) {
    return {
      statusCode: 401,
      statusDescription: "Unauthorized",
      headers: { "www-authenticate": { value: "Basic" } }
    };
  }
  return request;
}

Basic認証に設定したいユーザ名とパスワードを「ユーザ名:パスワード」の形式でuserpassに記述してください。

これをデプロイしてアクセスすればBasic認証が有効になっているはずです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です