web-dev-qa-db-ja.com

NGINXによる認証

ユーザー用のhtpasswdファイルで基本的なブラウザー認証を使用して一連のNGINXプロキシを実行しています。

Laravelを使用して、ユーザーを認証し、これらのnginxプロキシへのリンクのリストを表示する小さなアプリケーションを作成しました。

Nginx認証をJWTトークンのようなものに更新しようとしていますが、実際のトークン自体を検証するためのAPIがなくても十分に安全かどうかはわかりません。

私が考えていたもう1つのオプションは、LDAPソリューションであり、LaravelとLDAP認証を使用するNGINXプロキシの両方を持つことでした。

Nginxプロキシの背後にあるアプリには認証がなく、現時点では認証を追加する予定はありません。

2
Patrick Helms

Nginxには request auth module が含まれています。

サブリクエストの結果に基づいてクライアント認証を実装します。サブリクエストが2xx応答コードを返す場合、アクセスは許可されます。 401または403が返される場合、アクセスは対応するエラーコードで拒否されます。サブリクエストによって返されるその他の応答コードは、エラーと見なされます。

401エラーの場合、クライアントはサブリクエスト応答から「WWW-Authenticate」ヘッダーも受け取ります。

2つの可能性が思い浮かびます。

  • 既存のLaravelアプリケーションを拡張して、Nginxから「リンク」できるようにすることができます。これにより、ユーザーは「ログイン」ページに移動し、認証された場合は、 Nginxへの「200OK」応答。
  • この手法を活用して、最初の既存のソリューションを確認できます。たとえば、 Nginx LDAP Auth です。

2番目の答えについて詳しく説明します。

  • アカウントデータが実際にLDAPに保存されている場合は、たとえばcronを介して定期的に実行されるスクリプトを記述できます。このスクリプトは、LDAPからデータを引き出し、Nginxが読み取るためにhtpasswdファイルに書き込みます。
2
gf_

Nginxには、これを行うための組み込みの方法がありません。 htpasswd認証とIPごとの許可/拒否ルールのみを実行できます。

Nginx Plusにはこれを行う方法があり、詳細については Nginxブログ で説明されています。

0
user439837