CloudFrontでBasic認証を設定する方法を紹介します。
CloudFront FunctionsでBasic認証を設定する方法
CloudFrontを利用時はオリジン側でBasic認証をいれてもそのままではCloudFront側で応答してしまい、Basic認証が有効にならないです。
ビューワからのリクエスト時に実行できるCloudFront FunctionsでBasic認証を導入する方法を紹介します。
CloudFront Functionsについては以下の記事でも紹介しています。
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認証が有効になっているはずです。