サーブレットのセキュリティについては、web.xml で宣言できることを読みました。
<auth-constraints> and <user-data-constraint>
SSL を有効にするため、および認証の目的で使用します。しかし、これまでのところ、実際のweb.xml(Tomcat、Glassfishで実行されているアプリ)でこれらの宣言を個人的に見たことはありません
それでは、これらの目標を達成するための代替方法は何だろうか? どちらの方法が好ましいですか?
サーブレットのセキュリティについては、web.xml で宣言できることを読みました。
<auth-constraints> and <user-data-constraint>
SSL を有効にするため、および認証の目的で使用します。しかし、これまでのところ、実際のweb.xml(Tomcat、Glassfishで実行されているアプリ)でこれらの宣言を個人的に見たことはありません
それでは、これらの目標を達成するための代替方法は何だろうか? どちらの方法が好ましいですか?
使用するアプリケーション サーバーに大きく依存しますが、一般に、(デプロイメント記述子ではなく) AS のレベルで SSL を有効にしない限り、アプリケーション サーバーが SSL を使用してアプリケーションを公開するようにする方法はありません。
たとえば、Tomcat の場合、SSL コネクタ (デフォルト ポート 8443) を で有効にする必要がありserver.xml
ます。mod_proxy
またはを使用して、リバース プロキシとして Apache (httpd) を使用できmod_jk
ます。
すべてのリクエストをインターセプトするために使用できるコードServletFilter
で、通信が SSL の上にない場合は、ユーザーをログイン ページにリダイレクトできます。
最初にロールを宣言します。アノテーションを使用するか、web.xml で実行できます。
@DeclareRoles("userRole")
public class SomeServlet extends HttpServlet {
...
}
次に、に追加<security-constraint>
しますweb.xml
:
<security-constraint>
<display-name>SecurityConstraint</display-name>
<web-resource-collection>
<web-resource-name>SomeServlet</web-resource-name>
<url-pattern>/some_servlet</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>userRole</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>file</realm-name>
</login-config>
は<url-pattern>
保護するパターンです。
SSLの場合、入力CONFIDENTIAL
します<transport-guarantee>