エンジニアの雲日記

Javaの勉強中やで〜

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> がセットになって、フォーム認証が完成するんやで!