1.6. Web コンテンツのセキュリティ制約
Web アプリケーションでは、保護されたコンテンツを識別する URL パターンによってコンテンツへのアクセスが許可されるロールがセキュリティを定義します。この一連の情報は、
web.xml security-constraint 要素を使用して宣言されます。

図1.6 <security-constraint> 要素
セキュリティ保護されたコンテンツは 1 つ以上の <web-resource-collection> 要素を使用して宣言されます。各 <web-resource-collection> 要素にはオプションの <url-pattern> 要素があり、その後にオプションの <http-method> 要素が含まれます。 <url-pattern> 要素値は、要求 URL が要求に対して一致しなければならない URL パターンを指定し、安全なコンテンツへのアクセスに対応します。<http-method> 要素値は許可する HTTP 要求のタイプを指定します。
オプションの <user-data-constraint> 要素はサーバー接続のクライアントのトランスポートレイヤに対する要件を指定します。要件はコンテンツの整合性 (通信プロセスでのデータの改ざんを防ぐ) または機密性 (伝送中の読み取りを防ぐ) を目的とすることがあります。<transport-guarantee> 要素値はクライアントとサーバー間でどの通信がどの程度保護されるかを指定します。その値は
NONE、INTEGRAL、CONFIDENTIAL になります。NONE の値は、アプリケーションはどのトランスポートの保証も必要としないことを意味します。INTEGRAL の値は、アプリケーションでは伝送中に変化不可能な方法でクライアントとサーバー間で送信されたデータが送信される必要があることを意味します。CONFIDENTIAL の値は、アプリケーションでは他のエンティティが送信のコンテンツを監視しない方法でデータが送信される必要があることを意味します。ほとんどの場合、INTEGRAL か CONFIDENTIAL のフラグがあると SSL の使用が必要になります。
オプションの <login-config> 要素は使用されるべき認証メソッドやアプリケーションに使用されるべきレルム名、フォームログインメガニズムで必要な属性を設定するために使用します。

図1.7 <login-config> 要素
<auth-method> 子要素は Web アプリケーションに対し認証メカニズムを指定します。承認制約によって保護されている Web リソースへのアクセスを取得する前提条件として、ユーザーは設定されたメカニズムを使用して認証されている必要があります。有効な <auth-method> 値は
BASIC、DIGEST、FORM、CLIENT-CERT です。<realm-name> 子要素は HTTP ベーシックおよびダイジェスト認証で使用するレルム名を指定します。<form-login-config> 子要素はフォームベースのログインで使用されるエラーページだけでなくログインも指定します。<auth-method> 値が FORM でない場合は、form-login-config とその子要素は無視されます。
例1.6「web.xml 記述子の一部」 は Web アプリケーションの
/restricted パスにあるすべての URL が AuthorizedUser ロールを必要とすることを示しています。必要となるトランスポートの保証はなく、ユーザーアイデンティティの取得に使用される認証メソッドは BASIC HTTP 認証になります。
例1.6 web.xml 記述子の一部
<web-app>
<!-- ... -->
<security-constraint>
<web-resource-collection>
<web-resource-name>Secure Content</web-resource-name>
<url-pattern>/restricted/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>AuthorizedUser</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>The Restricted Zone</realm-name>
</login-config>
<!-- ... -->
<security-role>
<description>The role required to access restricted content </description>
<role-name>AuthorizedUser</role-name>
</security-role>
</web-app>