NGINX PlusでHttp Basic認証を検証してみた!
NGINX Plusは様々な機能を持っています、その中には認証機能もございます。
今回はNGINX PlusでHttp Basic認証と呼ばれる簡単な認証の検証を実施してみました!
はじめに
ブログを読んでいただきありがとうございます! 東京エレクトロンデバイスのJo Nishikawaです。
以前、NGINX PlusとOktaやOkta Customer Identity Cloud(旧Auth0)を認証連携させて、アプリケーションにシングルサインオンをする記事を投稿しました。 NGINX PlusとOktaの認証連携 NGINX Plus と Okta Customer Identity Cloud(旧Auth0)の認証連携
そういえばNGINX Plusも認証の機能をもっているな~と思いましたので、今回は他のサービスなどと連携をせずに、NGINX Plusが機能として持っているHttp Basic認証を検証してみたいと思います。
検証環境
WSL2上のUbuntu-20.04にDockerコンテナをたてました コンテナにNGINX Plusをインストールして検証をしていきます。
動作確認したいこと
- コンテンツに対して正しい情報でアクセスできること
- コンテンツに対して不正な情報でアクセスできないこと
検証
STEP1:パスワードファイルの作成
apache2-utilsのインストール
htpasswadコマンドを使うために以下のコマンドでapache2-utilsをインストール
$ apt install apache2-utils
ユーザー、パスワードのペアを作成
以下のコマンドでユーザー情報を格納するディレクトリを作成
$ mkdir /etc/apache2/
以下のコマンドでユーザー、パスワードのペアを作成 今回はuser1を作成、パスワードの入力も求められるため入力を実施
$ htpasswd -c /etc/apache2/.htpasswd user1
New password:
Re-type new password:
Adding password for user user1
以下のコマンドでuser1が作成されていることを確認する パスワードはハッシュ化されている状態で出力されることを確認
$ cat /etc/apache2/.htpasswd
user1:$apr1$08CeGdGX$BS7KHOL.iuic.aRLb27.11
STEP2:Http Basic認証用の NGINX および NGINX Plus の構成
default.confの設定変更
Http Basic認証の対象とするlocationにauth_basicディレクティブとauth_basic_user_fileディレクティブを追記する
$ vi etc/nginx/conf.d/default.conf
~~~
location / {
auth_basic "HTTP Basic Auth Area"; #""内は自由に命名可能
auth_basic_user_file /etc/apache2/.htpasswd; #ユーザー、パスワード情報のファイルを指定
root /usr/share/nginx/html;
index index.html index.htm;
}
~~~
NGINX Plusのサービスを再起動 今回、コンテナ環境で実施していたので以下のコマンドで実施
$ docker restart mynginxplus-http-Basic-Certification
STEP3:テスト
正常にログインできることの確認
コンテンツに対してブラウザでアクセスを実施、無事にログイン情報が求められるようになった
不正な情報でログインできないことの確認
不正な情報でログインを実施 ※パスワードを不正なものにしています
不正な情報だったため、アクセスできずログインを再度要求されることを確認
無事に確認したかった動作を見ることができました!
まとめ
今回はNGINX Plusが機能としてもっているHttp Basic認証を検証しました。 外部サービスなどを使わない簡単な認証となりますが、追加コストなどはかかりませんので認証の第一歩としては良いのではないでしょうか。 また、Http Basic認証は以前naraiさんが投稿した記事のNGINX で IP アドレスによるアクセス制限を行う方法で紹介しているIPアドレス制限と組み合わせることもできます。
簡単にできるとは述べましたが、やはり本番環境などではHttp Basic認証だけでは十分な認証ができているとは言えませんので適切な認証を検討して実装することが良いと思います。
また、Http Basic認証はNGINX OSSでも利用することができる機能ですが本番環境などでは、NGINX Plusの認証連携機能を利用することも一つのアイデアかなと思います。
また検証ネタを投稿したいと思っておりますので次回も是非読んでください!