12.3. EJB 应用程序的安全性
12.3.1. 安全标识符 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
12.3.1.1. 关于 EJB 的安全标识符 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
安全标识符(Security Identity),也称为调用标识符(Invocation Identity),指的是安全配置里的
<security-identity> 标记。它表示其他 EJB 在调用组件上的方法时必须使用的标识符。
调用标识符可以是当前的调用者,或者是专有的角色。第一种情况会使用
<use-caller-identity> 标签,而第二种情况则使用 <run-as> 标签。
关于设置 EJB 的安全标识符的更多信息,请参考 第 12.3.1.2 节 “设置 EJB 的安全标识符”。
12.3.1.2. 设置 EJB 的安全标识符 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
例 12.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>
例 12.4. 设置 EJB 的安全标识符为特定的角色
要设置安全标识符为特定角色,请使用
<security-identity> 标签里的 <run-as> 或 <role> 标签。
<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> 元素。