![]() |
Sun ONE Identity Server ポリシーエージェントガイド |
この付録では、ロールと主体のマッピングの作成に関するサンプルシナリオを提供します。
宣言によるセキュリティ
メソッドの 1 つに対してアクセスが保護された Enterprise JavaBean コンポーネントについて考えてみます。この保護は、ejb-jar.xml 配備記述子の assembly-descriptor 要素にセキュリティロール (security-role) とメソッド許可 (method-permission) の要素を追加することで適用できます。
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC
'-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN'
'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<ejb-jar>
...
<assembly-descriptor>
<security-role>
<role-name>FOO</role-name>
</security-role>
<method-permission>
<role-name>FOO</role-name>
<method>
<ejb-name>WebProxy</ejb-name>
<method-intf>Remote</method-intf>
<method-name>getWebPage</method-name>
<method-params>
<method-param>java.lang.String</method-param>
<method-param>java.lang.String</method-param>
</method-params>
</method>
</method-permission>
</assembly-descriptor>
</ejb-jar>
「FOO」というセキュリティロールは、weblogic-ejb-jar.xml 配備記述子を使って実際の主体にマッピングできます。
<?xml version="1.0"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB//EN'
'http://www.bea
.com/servers/wls6000/dtd/weblogic-ejb-jar.dtd'>
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>WebProxy</ejb-name>
<jndi-name>ejb.WebProxy</jndi-name>
</weblogic-enterprise-bean>
<security-role-assignment>
<role-name>FOO</role-name>
<principal-name>amAdmin</principal-name>
</security-role-assignment>
</weblogic-ejb-jar>
プログラムによるセキュリティ
サーブレットの 1 つが HttpServletRequest.isUserInRole(String) などのプログラムによるセキュリティ API を使うサンプルアプリケーションについて考えてみます。サーブレットのコードで使うロール名は、配備記述子名と同じ「SAMPLE-ROLE」であると仮定します。
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.c
om/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Sample Security Aware application</display-name>
<filter>
<filter-name>Agent</filter-name>
<display-name>Agent</display-name>
<description>Identity Server Policy Agent for WebLogic Server 6.1</description>
<filter-class>
com.iplanet.amagent.weblogic.filter.AgentFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>Agent</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>SampleServlet</servlet-name>
<servlet-class>
com.iplanet.sample.SampleServlet
</servlet-class>
<security-role-ref>
<description>
This role is a sample test role for the
security aware servlet
</description>
<role-name>SAMPLE-ROLE</role-name>
<role-link>SAMPLE-ROLE-LINK</role-link>
</security-role-ref>
</servlet>
<servlet-mapping>
<servlet-name>SampleServlet</servlet-name>
<url-pattern>/Test</url-pattern>
</servlet-mapping>
<security-role>
<description>Some description</description>
<role-name>SAMPLE-ROLE-LINK</role-name>
</security-role>
</web-app>
SAMPLE-ROLE-LINK は、weblogic.xml 配備記述子を使って実際の主体にマッピングされます。
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 6.1//EN" "http://www.be
a.com/servers/wls610/dtd/weblogic-web-jar.dtd">
<weblogic-web-app>
<security-role-assignment>
<role-name>SAMPLE-ROLE-LINK</role-name>
<principal-name>Employee</principal-name>
</security-role-assignment>
</weblogic-web-app>