第 6 章 Jakarta Enterprise Beans 应用程序安全性
6.1. 安全身份
6.1.1. 关于 Jakarta Enterprise Beans 安全身份
Jakarta Enterprise Beans 可以指定在调用其他组件时要使用的身份。这是 Jakarta Enterprise Beans 安全身份,也称为调用身份。
默认情况下,Jakarta Enterprise Beans 使用自己的调用者身份。身份也可以设置为特定的安全角色。当您想构建分段安全模型时,使用特定的安全角色很有用处,例如,限制对一组组件的访问,以仅访问内部 Jakarta Enterprise Beans。
6.1.2. 设置 Jakarta Enterprise Beans 的安全身份
Jakarta Enterprise Beans 的安全身份通过安全配置中的 <security-identity> 标签指定。如果没有 <security-identity> 标签,则默认使用 Jakarta Enterprise Beans 的调用者身份。
示例:将 Jakarta Enterprise Beans 的安全身份设置为与 Its Caller 相同
本例将 Jakarta Enterprise Beans 进行的方法调用的安全身份设置为与当前调用者的身份相同。如果没有指定 <security-identity> 元素声明,则此行为是默认设置。
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>ASessionBean</ejb-name>
...
<security-identity>
<use-caller-identity/>
</security-identity>
</session>
...
</enterprise-beans>
</ejb-jar>示例:将 Jakarta Enterprise Beans 的安全身份设置为特定角色
要将安全身份设置为特定角色,请在 < 标签。
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 的主体。要分配不同的主体,请使用 <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> 元素。