IBM Cloud Internet Servicesを使ってサイト全体にベーシック認証をかける
目的
IBM Cloud Internet Services(CIS)は、Cloudflareを利用したCDNやWAF機能を提供するサービスです。そのEnterpriseプラン(Enterprise Usage、Enterprise Packageなど)では、Edge Functionsという機能を使って、スクリプト処理をリクエストの前後に挟むことができます。
Edge FunctionsはCloudflareではCloudflare Workersと呼ばれる機能です
さて、公開サイトを非公開にするためにベーシック認証を使いたい場合があると思いますが、このときにWebサーバで1つ1つ設定するのは手間です。今回はCISのEdge Functionsを使ってBasic認証をかけてみます。
検証
前提
- CISのEnterpriseプランがオーダー済であること
- 対象となるWebサーバへのGLBは設定済であること
パスワードの生成
Basic認証のパスワードはID:パスワード
をBase64エンコードしたものです。今回はIDをuser1
、パスワードをhogehoge
とし、次のようにBase64エンコード文字列を生成します。
$ echo -n "user1:hogehoge" | base64
dXNlcjE6aG9nZWhvZ2U=
アクションの登録
コンソールから作成を選びます。
次のようなコードを設定します。Basic ~
のところは先ほど生成したBase64エンコード文字列にします。
addEventListener('fetch', event => {
event.respondWith(fetchAndApply(event.request));
});
async function fetchAndApply(request) {
if (request.headers.get('authorization') != 'Basic dXNlcjE6aG9nZWhvZ2U=') {
response = new Response('', { status: 401, statusText: 'Unauthorized' });
response.headers.set('WWW-Authenticate', 'Basic realm="Authentication Required"');
return response;
}
return fetch(request);
}
これにbasic-authという名前をつけて保存します。
次にこれを適用するURLを指定します。トリガータブからトリガーの追加を選択します。
トリガーURLはサイト全体ならFQDNでよいです。アクションにbasic-authを選択し保存します。
動作確認
ブラウザでサイトにアクセスします。ベーシック認証のダイアログが表示されます。
これで、先ほど指定したIDとパスワードでログインできることを確認してください。
以上
Author And Source
この問題について(IBM Cloud Internet Servicesを使ってサイト全体にベーシック認証をかける), 我々は、より多くの情報をここで見つけました https://qiita.com/teruq/items/48d74426ed15236ed1f2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .