14.7. 在 Servlet 里使用基于角色的安全性

要在 servlet 里添加安全性,你可以将每个 servlet 映射到 URL 模式,并在需要设置安全性的 URL 模式上创建安全性约束。这些安全性约束限制对 URL 的访问的角色。其验证和授权是由 WAR 的 jboss-web.xml 里指定的安全域处理的。
前提条件

在你在 servlet 里使用基于角色的安全性之前,用来验证和授权访问的安全域需要在 JBoss EAP 容器里进行配置。

过程 14.2. 在 Servlet 里添加基于角色的安全性

  1. 在 servlet 和 URL 模式间添加映射。

    使用 web.xml 里的 <servlet-mapping> 元素来映射单独的 servlet 和 URL 模式。下面的例子映射名为 DisplayOpResult 的 servlet 到 URL 模式 /DisplayOpResult
    <servlet-mapping>
        <servlet-name>DisplayOpResult</servlet-name>
        <url-pattern>/DisplayOpResult</url-pattern>
    </servlet-mapping>		
    			
    
    
  2. 添加安全约束到 URL 模式。

    要映射 URL 模式到安全约束,可以使用 <security-constraint>。下面的例子约束了具有角色 eap_admin 的 principal 对 URL 模式 /DisplayOpResult 的访问。这个角色需要出现在安全域里。
    <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-role>
    		<role-name>eap_admin</role-name>
    	</security-role>
    </security-constraint>		
    			
    
    
  3. 在 WAR 的 jboss-web.xml 里指定安全域

    添加安全域到 WAR 的 jboss-web.xml 以连接 servlet 到配置好的安全域,它知道如何根据安区性约束验证和授权 principal。下面的例子使用名为 acme_domain 的安全域。
    <jboss-web>
    	...
    	<security-domain>acme_domain</security-domain>
    	...
    </jboss-web>