15.4. EJB 应用程序的安全性

15.4.1. 安全标识符

15.4.1.1. 关于 EJB 的安全标识符

安全标识符(Security Identity),也称为调用标识符(Invocation Identity),指的是安全配置里的 <security-identity> 标记。它表示其他 EJB 在调用组件上的方法时必须使用的标识符。
调用标识符可以是当前的调用者,或者是专有的角色。第一种情况会使用 <use-caller-identity> 标签,而第二种情况则使用 <run-as> 标签。
关于设置 EJB 的安全标识符的更多信息,请参考 第 15.4.1.2 节 “设置 EJB 的安全标识符”

15.4.1.2. 设置 EJB 的安全标识符

例 15.3. 设置 EJB 和其调用者相同的安全标识符

这个例子为 EJB 的方法调用设置了和当前调用者相同的安全标识符。如果你没有指定 <security-identity> 元素声明,这个行为是默认的。
<ejb-jar>
  <enterprise-beans>
	 <session>
		<ejb-name>ASessionBean</ejb-name>
		<!-- ... -->
		<security-identity>
		  <use-caller-identity/>
		</security-identity>
	 </session>
	 <!-- ... -->
  </enterprise-beans>
</ejb-jar>

例 15.4. 设置 EJB 的安全标识符为特定的角色

要设置安全标识符为特定角色,请使用 <security-identity> 标签内部的 <run-as><role-name> 标签。
<ejb-jar>
  <enterprise-beans>
	 <session>
		<ejb-name>RunAsBean</ejb-name>
		<!-- ... -->
		<security-identity>
		  <run-as>
			 <description>A private internal role</description>
			 <role-name>InternalRole</role-name>
		  </run-as>
		</security-identity>
	 </session>
  </enterprise-beans>
  <!-- ... -->
</ejb-jar>

在默认情况下,当你使用 <run-as> 时,名为 anonymous 的 principal 被分配给转出调用。要分配不同的 principal,请使用 <run-as-principal>
<session>
    <ejb-name>RunAsBean</ejb-name>
    <security-identity>
        <run-as-principal>internal</run-as-principal>
    </security-identity>
</session>

注意

你也可以使用 servlet 元素里的 <run-as><run-as-principal> 元素。