私はnginxの基本認証を使用していますが問題はありませんが、ユーザーが認証された別個の場所の数を制限したいのです 最終的な目標は、ウェブサイトはいくつかのデータをリアルタイムで「監視」しているので、別のIPから同じユーザ/パスの組み合わせを使用した場合、またはどちらのユーザもデータの取得を停止するか、 か、 。Nginxの基本認証と認証された場所の数
答えて
ユーザーはPCと携帯電話で同時にログインし、2つの異なるIPアドレスを持つことができるので、これは良い考えではないと思います。また、http-authはあなたが望むことをするようには設計されていません。ユーザーがログアウトせずに出ると、ip-addressを覚えて、何とか期限切れにする必要があります。セッションがどれくらい有効であるかを推測することは、全体的には難しいでしょう。もう1つの問題は、ほとんどのユーザーは静的IPを持っておらず、24時間ごとにプロバイダから切断されるということです。有効なログイン後にそれが発生した場合はどうなりますか?
この種の問題に対処する最も一般的な方法はセッションクッキーです。これらはワンタイムパスワードとして記述することができ、望みどおりに、または有効期限が切れるまで使用することができます。セッションIDは通常、ある種類のデータベースに保存され、これらのセッションをユニークにすることは大きな問題ではないため、必要なものになる可能性があります。幸いなことに、 ngx_http_auth_request_moduleは、この欠けている部分を実装するだけで、独自のnginx-moduleを開発することなく手に入れることができます(使用可能なモジュールについては、https://www.nginx.com/resources/wiki/modules/を参照してください)。
一方、そうしないでください。真剣に。あなたがセキュリティを気にかけているならば、すでに実証済みのものを再利用しようとしないでください。例えば。 ngx_http_auth_jwt_moduleは、OpenIDを使用することができます。これにより、サーバーに賢明なユーザーデータを保存する必要がなくなります(絶対に必要な場合を除き、誰もパスワードを保存しないため)。
これらの方法にはいずれもnginxモジュールが必要です。これらのモジュールは、ご使用のサーバーにインストールされていない可能性があります。それらを構築する権限がなければ、他の人が非ルートサーバーのためのソリューションを提案できるように、あなたの質問にそれを追加することを提案します。
さらに簡単にするには、毎回ダウンロードリンクを生成し、ip-addressとダウンロードリンクアドレスをデータベースに保存することを検討する必要があります。ユーザーがそのファイルをダウンロードし、完了したらエントリを削除します。そのためには Content-Disposition: attachment; filename=FILENAME
-HTTP-Headerを使用することができます。download.php
は同様に呼び出されたファイルを保存しません。
また、ngx_http_auth_jwt_module
を置き換えてhttp-authでOpenIDを使用するjavascriptを見つけることもできます。これは、ajaxで認証を行うことも可能であるため、機能します。
最後に、http-authを実行したい場合は、デフォルトではこの認証方法でパスワードが暗号化されないため、HTTPSも使用します。
あなたがしたいことは珍しいので、プロセスを処理するための多くのロジックを記述する必要があります。
コードでは、ログインしているユーザーごとにユーザーIDとIPアドレスのペアを格納し、これに対してそれぞれのログイン試行を検証する必要があります。以前の答えが指摘したように、ログインなどを期限切れにする必要があります。基本的には、セッションハンドラをロールバックする必要があります。
これは不可能ではなく、特に難しいことではありませんが、Nginxが利用できるスクリプト言語の1つで、Nginxの限られたエコシステムのために推奨されていないPerlまたは強く推奨されるLua (例えばCloudflareで使用される)大規模なNginxのluaエコシステムのために。
3rd party Nginx Lua Moduleと関連するモジュールでコンパイルするか、Nginxをアンインストールするだけで、すでに含まれている必要があるすべてのものが含まれているOpenresty Bundleを使用する必要があります。
ここではいくつかのツールは、あなたのビルディングブロック、あなたがすることなく、希望する場合は、直接nginxのでOpenrestyものを実装することができます
Openresty Redis Session Library
Openresty Encrypted Session Module
ノートとして使用することができますそれはNginxと便利なモジュールの単なる便利なバンドルですので、Openrestyを実行します。
- 1. Nginxリバースプロキシ - パススルー基本認証
- 2. Nginx + Symfony。サブフォルダ以外の基本認証
- 3. 基本認証
- 4. 基本認証
- 5. 環境変数に基づくNGINX基本認証
- 6. 基本アクセス認証
- 7. 基本認証エラー
- 8. チャレンジログイン、基本認証
- 9. Retrofit +基本認証
- 10. CORSとHTTP基本認証
- 11. Cakephp 2.0と基本認証
- 12. VisualSVNと基本認証
- 13. 基本認証とJWT
- 14. ASP.NET Web APIを使用した基本認証とフォーム認証
- 15. NginxまたはApacheでの基本認証ヘッダーの削除
- 16. Apacheの基本認証とフラスコトークンの認証を一緒に
- 17. ルーメンでの基本認証
- 18. Alamofireの基本認証ヘッダー
- 19. GowallaのHTTP基本認証?
- 20. OpenLayersの基本認証3
- 21. Webサービスの基本認証
- 22. WCFの基本認証
- 23. Padrinoの基本ユーザ認証
- 24. EWSでの基本認証とNTLM認証
- 25. ASP.NET MVC3での基本認証とフォーム認証を混在
- 26. WCFウィンドウ認証と基本認証の切り替え
- 27. Grailsで基本認証とフォームベースの認証をサポートする
- 28. Springセキュリティによる基本認証とフォームベースの認証Javaconfig
- 29. GRequestsを使用した認証または基本認証
- 30. 基本認証クレーム認証付きSP2010にインストールされたWCFサービス
「監視」はどのように行われますか?永続的な接続がnginx経由で開いたままになっていますか?同じユーザー/パスが使用されているときに望ましい動作は何ですか、http 403は行いますか?ユーザーは、同じIPからの複数のセッションを並行して持つことができますか? – ffeast
1セッションあたり1セッション – forcewill