8.2.7. Web コンテンツのセキュリティー制約
Web アプリケーションでセキュリティーは、保護されているコンテンツを識別する URL パターンによるコンテンツへのアクセスが許可されるロールで定義されます。この一連の情報は、
web.xml security-constraint 要素を使用して宣言されます。
図8.5 Web コンテンツのセキュリティー制約
セキュリティー保護するコンテンツは、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> 要素は、使用する認証方法、アプリケーションに使用するレルム名、フォームログインメカニズムで必要な属性を設定するために使用されます。
図8.6 Web ログインの設定
<auth-method> 子要素は、Web アプリケーションの認証メカニズムを指定します。承認制約で保護される Web リソースへのアクセス権を取得する前提条件として、ユーザーは設定済みのメカニズムを使用して認証する必要があります。有効な <auth-method> 値は、
BASIC、DIGEST、FORM、SPNEGO、および CLIENT-CERT です。<realm-name> 子要素は、HTTP Basic およびダイジェスト承認で使用するレルム名を指定します。<form-login-config> 子要素はログインと、フォームベースのログインで使用するエラーページを指定します。<auth-method> 値が FORM ではない場合、form-login-config とその子要素は無視されます。
以下の設定例は、Web アプリケーションの
/restricted パスで強制される URL に AuthorizedUser ロールが必要であることを示しています。必要なトランスポートの保証はなく、ユーザー ID の取得に使用される認証方法は BASIC HTTP 認証です。
例8.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>