web.xmlの警備員! <security-constraint> の役割や!
この <security-constraint> 要素は、君のウェブアプリケーションにとっての警備員みたいなもんやで!
「このエリア(URL)には、特定の身分証(ロール)を持ってる人しか通したあかんで!」
っていう**セキュリティ上の制限(Constraint)**を、コンテナ(Tomcatとか)に教える役割があるんや。
📝 <security-constraint> の基本的な構造と役割
<security-constraint> の中には、主に3つの重要なサブ要素が入ってるで。
1. <web-resource-collection> (保護する対象を指定!)
これは「どのリソース(URL)を保護したいか」を指定する要素や。
* <web-resource-name>: この保護対象に付ける名前(適当でええで)。
* <url-pattern>: アクセスを制限したいURLのパターンを指定するんや。これが一番大事!
> 例: <url-pattern>/admin/*</url-pattern> \rightarrow 「/admin/の下にある全てのファイル」を保護するで!
>
* <http-method>: GETやPOSTなど、どのHTTPメソッドによるアクセスを制限するかを指定する。
2. <auth-constraint> (許可する身分証(ロール)を指定!)
これは「誰にアクセスを許可するか」を指定する要素や。
この中に、**許可したいロール(役割)**の名前を書くんや。
* <role-name>: アクセスを許可するロールの名前(例:manager、userなど)を指定する。
> 例: <role-name>manager</role-name> \rightarrow 「managerのロールを持ってる人だけ通してええで!」っていう意味や。>
3. <user-data-constraint> (通信の安全性を指定!)
これは「通信を暗号化(SSL/TLS)せなあかんか」を指定する要素や。
機密性の高いページ(ログイン画面とか)で使うで。
* <transport-guarantee>: CONFIDENTIAL(暗号化が必要)や NONE(必要なし)を指定する。
📜 web.xml の設定例
この設定は、こうやって書くのが一般的や。
<security-constraint>
<web-resource-collection>
<web-resource-name>社長室へのアクセス制限</web-resource-name>
<url-pattern>/syacho_room/*</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>manager</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
こんな感じで設定しておくと、syacho_room のページにアクセスしようとした人は、自動的にログイン画面に飛ばされて、
「manager」っていう身分証がないと「立ち入り禁止!」ってなるわけや!😎
これがセキュリティ設定の基本中の基本やで!
この <security-constraint> と、ログイン画面を設定する <login-config> がセットになって、フォーム認証が完成するんやで!