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