0

Apache Tomcat を実行し、Spring で開発したサーバー側アプリケーションがあります。一部のユーザーがローカル ネットワーク外のアプリケーションにアクセスできないようにする必要があります。しばらく探していましたが、これを解決する方法が見つかりませんでした。Spring は、ユーザーの権限に基づいてユーザーの内部/外部アクセスを制限する機能を提供しますか?

4

3 に答える 3

5

サーブレット仕様では、リモートIPアドレスを表示できますServletRequest#getRemoteAddr()。IPアドレスによるアクセスを制限する従来の方法は、サーブレットフィルタを使用してIPアドレス範囲をホワイトリストまたはブラックリストに登録することです。Springアプリに追加できるサーブレットフィルターの実装を検索できます。あなたはそれを設定する必要があるでしょう。しかし...あなたが選んだ実装が以下を考慮していることを確認してください。そして、これを説明するものが見つからない場合は、自分で書くことを検討してください。

注意すべき重要な点は、サーバーから見た「リモートアドレス」がクライアントマシンを識別することはまったく保証されていないということです。これは、Spring /サーブレットの問題とは対照的に、ネットワークの問題です。サーバーが認識するリモートアドレスは、ロードバランサーまたは独自の内部ネットワーク上の他のネットワークデバイスのIPである場合もあります。

HTTPヘッダーX-Forwarded-Forについてお読みください。内部ネットワーク上のリバースプロキシまたは一部の構成のロードバランサーがTCP/IPスタック(HTTPなど)のアプリケーション層でリクエストを転送する場合、HTTPの場合は、サーバーから見た元のIPを変更しますそのデバイスは、多くの場合、元のIPをこのヘッダーに含めるか追加します。実際、リクエストが元の組織の複数のNATまたはプロキシを通過した場合、または独自のネットワークに到達する前にインターネット上で途中であった場合、このヘッダーには元のIPアドレスのリストを含めることができます。

禁止されているアドレスを確実にブラックリストに載せるのではなく、許可されているアドレスを控えめにホワイトリストに載せることをお勧めします。ネットワークアーキテクチャが変更された場合、これはより堅牢になる可能性がありますが、内部ネットワークでIPを再割り当てする場合は注意が必要です。

サーブレットフィルタは、ヘッダーServletRequest#getRemoteAddr()と解析の組み合わせを使用できます。X-Forwarded-For

また、IPv6アドレスをデザインとホワイトリストまたはブラックリストに含めることを忘れないでください。

于 2012-07-31T13:32:48.103 に答える
0

I don't know anything about Spring, but, assuming you have access to Tomcat's config files, you can set up a Valve in the configuration files of either Tomcat itself or particular webapps to filter access based on IP address.

http://tomcat.apache.org/tomcat-5.5-doc/config/valve.html#Remote_Address_Filter http://vicker313.wordpress.com/2010/11/05/restrict-ip-coming-to-tomcat-service/

于 2012-07-31T12:59:25.877 に答える
0

はい、hasIpAddress(String)XML式を使用するときにWebセキュリティ例外を使用できます

リンク: 15.2 Web セキュリティ式

于 2012-07-31T12:55:12.977 に答える