18.2.9. サーブレットでロールベースのセキュリティーを使用する
サーブレットにセキュリティーを追加するには、各サーブレットを URL パターンにマップし、セキュリティーで保護する必要のある URL パターンにセキュリティー制約を作成します。セキュリティー上の制約により、URL へのアクセスがロールに制限されます。認証と承認は、WAR の
jboss-web.xml
で指定されたセキュリティードメインによって処理されます。
前提条件
サーブレットでロールベースのセキュリティーを使用する前に、アクセスの認証と承認に使用されるセキュリティードメインを JBoss EAP 6 コンテナーで設定する必要があります。
手順18.3 サーブレットにロールベースのセキュリティーを追加する
サーブレットと URL パターンの間にマッピングを追加します。
web.xml
の<servlet-mapping>
要素を使用して、個々のサーブレットを URL パターンにマップします。次の例では、DisplayOpResult
というサーブレットを URL パターン/DisplayOpResult
にマップします。<servlet-mapping> <servlet-name>DisplayOpResult</servlet-name> <url-pattern>/DisplayOpResult</url-pattern> </servlet-mapping>
URL パターンにセキュリティー制約を追加します。
URL パターンをセキュリティー制約にマップするには、<security-constraint>
を使用します。次の例では、URL パターン/DisplayOpResult
からのアクセスを、ロールeap_admin
のプリンシパルがアクセスするように制限しています。ロールはセキュリティードメインに存在する必要があります。<security-constraint> <display-name>Restrict access to role eap_admin</display-name> <web-resource-collection> <web-resource-name>Restrict access to role eap_admin</web-resource-name> <url-pattern>/DisplayOpResult/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>eap_admin</role-name> </auth-constraint> </security-constraint> <security-role> <role-name>eap_admin</role-name> </security-role> <login-config> <auth-method>BASIC</auth-method> </login-config>
認証方法を指定する必要があります。これは、BASIC、FORM、DIGEST、CLIENT-CERT、SPNEGO のいずれかになります。
この例では、BASIC
認証を使用しています。WAR の
jboss-web.xml
でセキュリティードメインを指定しますサーブレットを設定済みのセキュリティードメインに接続するために、セキュリティードメインを WAR のjboss-web.xml
に追加します。これは、セキュリティー制約に対してプリンシパルを認証および承認する方法を知っています。次の例では、acme_domain
というセキュリティードメインを使用しています。<jboss-web> ... <security-domain>acme_domain</security-domain> ... </jboss-web>
例18.1 ロールベースのセキュリティーが設定された web.xml
の例
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Use Role-Based Security In Servlets</display-name> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> <servlet-mapping> <servlet-name>DisplayOpResult</servlet-name> <url-pattern>/DisplayOpResult</url-pattern> </servlet-mapping> <security-constraint> <display-name>Restrict access to role eap_admin</display-name> <web-resource-collection> <web-resource-name>Restrict access to role eap_admin</web-resource-name> <url-pattern>/DisplayOpResult/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>eap_admin</role-name> </auth-constraint> </security-constraint> <security-role> <role-name>eap_admin</role-name> </security-role> <login-config> <auth-method>BASIC</auth-method> </login-config> </web-app>