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>
元素。