18.5. JAX-RS アプリケーションセキュリティー
18.5.1. RESTEasy JAX-RS Web サービスのロールベースのセキュリティーの有効化
概要
RESTEasy は JAX-RS メソッドでの @RolesAllowed、@PermitAll、@DenyAll アノテーションに対応しています。ただし、デフォルトではこれらの注釈は認識されません。以下の手順に従って、web.xml
ファイルを設定し、ロールベースのセキュリティーを有効にします。
警告
以下の RESTEasy パラメーターのデフォルト値を変更すると、RESTEasy アプリケーションが XXE 攻撃に対して潜在的に脆弱になる可能性があります。
- resteasy.document.expand.entity.references
- resteasy.document.secure.processing.feature
- resteasy.document.secure.disableDTDs
これらのパラメーターの詳細については、を参照してください。「RESTEasy 設定パラメーター」。
警告
アプリケーションが EJB を使用する場合は、ロールベースのセキュリティーをアクティベートしないでください。EJB コンテナーは RESTEasy ではなく機能を提供します。
手順18.5 RESTEasy JAX-RS Web サービスのロールベースのセキュリティーの有効化
- テキストエディターでアプリケーションの
web.xml
ファイルを開きます。 - 以下の <context-param> をファイルに、
web-app
内に追加します。<context-param> <param-name>resteasy.role.based.security</param-name> <param-value>true</param-value> </context-param>
- <security-role> タグを使用して、RESTEasy JAX-RS WAR ファイル内で使用されるすべてのロールを宣言します。
<security-role> <role-name>ROLE_NAME</role-name> </security-role> <security-role> <role-name>ROLE_NAME</role-name> </security-role>
- すべてのロールについて JAX-RS ランタイムによって処理されるすべての URL へのアクセスを承認します。
<security-constraint> <web-resource-collection> <web-resource-name>Resteasy</web-resource-name> <url-pattern>/PATH</url-pattern> </web-resource-collection> <auth-constraint> <role-name>ROLE_NAME</role-name> <role-name>ROLE_NAME</role-name> </auth-constraint> </security-constraint>
結果
ロールベースのセキュリティーは、定義されたロールとともにアプリケーション内で有効にされています。
例18.39 例: ロールベースのセキュリティー設定
<web-app> <context-param> <param-name>resteasy.role.based.security</param-name> <param-value>true</param-value> </context-param> <servlet-mapping> <servlet-name>Resteasy</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <web-resource-name>Resteasy</web-resource-name> <url-pattern>/security</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> <role-name>user</role-name> </auth-constraint> </security-constraint> <security-role> <role-name>admin</role-name> </security-role> <security-role> <role-name>user</role-name> </security-role> </web-app>