62
は、openssl passwdコマンドによってコマンドラインに公開されます。代 わりにopenssl
を使 用すると、以下のコマンドで暗号化されたパスワード文字 列を作成できます:
$ openssl passwd MyPassword1234
出力は、NGINXがパスワードファイル内で使用できる文字列になります。
auth_basicおよびauth_basic_user_fileディレクティブ をNGINX 構 成 の 中 で 使 用して
Basic認 証を有 効 にします:
location / {
auth_basic "Private site";
auth_basic_user_file conf.d/passwd;
}
HTTP、サーバー、またはロケーションコンテキストでauth_basicディレクティブ を使
用することができます。auth_basicディレクティブは 文字 列 パラメータを取ります。こ
れは、認証されていないユーザーが到達したときにBasic認 証ポップ アップ ウィンドウ
に表 示されます。auth_basic_user_fileはユーザーファイルへのパスを指定します。
構 成をテストするた めに 、curlと-uまたは--userを 使 用して 要 求 に Authorizationヘッ
ダーを構 築します。
$ curl --user myuser:MyPassword1234 https://localhost
解説
ベーシック認証パスワードは、セキュリティのレベルを変更し、いくつかの方法と異な
る形 式で 生 成 できます。Apacheからのhtpasswdコマンドもパスワードを生成できま
す。opensslおよびhtpasswdコマンドのどちらもNGINXが理解できるapr1アルゴリズム
のパスワードを生成できます。パスワードはLightweight Directory Access Protocol (LDAP)
や Dovecotが使用するSalted SHA-1形 式も使 用 可 能です。NGINXは多数の 形式とハッ
シュアルゴリズムをサポートしています。しかし、ブルートフォース攻撃によって簡単に侵
害される可能性があるため、それらの多くは安全でないと見なされます。
Basic認 証を 使 用して、NGINXホスト全体、特定の仮想サーバー、または特定のロケー
ションブロックのコンテキストを保 護 できます。Basic認証は、Webアプリケーション
のユーザー認証に取って代わるものではありませんが、個人情報を安全に保つのに
役立ちます。あまり知られていませんが、ベーシック認証はサーバーが応答ヘッダー
WWW-Authenticateを含む401の認証資格不足のHTTPコードを返すことによって 行 わ
れ ま す 。こ の ヘ ッ ダ ー に は Basic realm="your string"の値があります。この応答によ
り、ブラウザはユーザー名とパスワードの入 力を求めます。ユーザー名とパスワード
は連結され、コロンで区切られ、base64でエンコードされてから、Authorizationとい
う名前の 要求ヘッダーで 送 信 されます。Authorization要求ヘッダーは 、Basicおよび
user:passwordでエンコードされた文字列を指定します。サーバーはヘッダーをデコー
ド し 、提 供 さ れ た auth_basic_user_fileに 対 して 照 合 し ま す。ユ ー ザ ー 名 と パ ス ワ ー ド
| 第6章:認 証