Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

15.6. JAX-RSWeb サービスセキュリティー

15.6.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 ではなく機能を提供します。

手順15.1 RESTEasy JAX-RS Web サービスのロールベースのセキュリティーの有効化

  1. テキストエディターでアプリケーションの web.xml ファイルを開きます。
  2. 以下の <context-param> をファイルに、web-app 内に追加します。
    <context-param>
        <param-name>resteasy.role.based.security</param-name>
        <param-value>true</param-value>
    </context-param>
    
  3. <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>
  4. すべてのロールについて 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>

結果

ロールベースのセキュリティーは、定義されたロールとともにアプリケーション内で有効にされています。

例15.1 例: ロールベースのセキュリティー設定

<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>