EJB 安全性的认证协议
WebSphere® Application Server V9.0 服务器仅支持 CSIv2 认证协议。SAS
仅在 V9.0 单元中已联合的 V6.0.x 和更低版本的服务器中受支持。仅当已将 V6.0.x 或更早发行版联合到 V9.0 单元中之后,管理控制台中用于在
SAS 和/或 CSIv2 之间进行选择的选项才可用。
z/SAS
只有在已联合到 V9.0 单元中的 V6.0.x 及更早版本的服务器中受支持。仅当 V6.1 单元中联合了 V6.0.x 或更早发行版时,管理控制台中用于在 z/SAS 和/或 CSIv2 之间进行选择的选项才可用。
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
在安全的 WebSphere Application Server 环境中调用 Enterprise Java™ Beans (EJB) 方法时需要使用认证协议,以对每个请求确定安全性级别以及给定的任何客户机与服务器之间将执行的认证类型。在方法调用期间,认证协议负责将(由“可互操作对象引用”(IOR) 对象确定的)服务器认证需求与(由客户机配置确定的)客户机认证需求合并在一起,并提出特定于该客户机/服务器对的认证策略。
- 可以与此服务器建立哪种连接 - 安全套接字层 (SSL) 还是 TCP/IP?
- 如果选择 SSL,那么数据的加密强度如何?
- 如果选择 SSL,使用客户机证书来认证客户机吗?
- 使用用户标识和密码来认证客户机吗?存在现有凭证吗?
- 在下游的服务器中声明客户机标识吗?
- 给定客户机和服务器的配置,安全请求可以继续吗?
您可以配置同时使用两个协议(SAS 和 CSIv2)。如果服务器支持这两个协议,那么它导出 IOR,该 IOR 包含描述 SAS 和 CSIv2 的配置的已标记组件。如果客户机支持这两种协议,那么它会读取 CSIv2 和 SAS 的已标记组件。如果客户机支持两个协议并且服务器也支持两个协议,那么使用 CSIv2。但是,如果服务器支持 SAS(例如,它是
WebSphere Application Server 的前发行版)并且客户机支持这两个协议,那么由于 SAS 协议是共有的,所以客户机会为该请求选择 SAS。
您可以配置同时使用两个协议(z/SAS 和
CSIv2)。如果服务器支持这两个协议,那么它导出 IOR,该 IOR 包含描述 z/SAS 和 CSIv2 的配置的已标记组件。如果客户机支持这两个协议,那么它将读 CSIv2 和 z/SAS 的已标记组件。如果客户机支持两个协议并且服务器也支持两个协议,那么使用 CSIv2。但是,如果服务器支持 z/SAS(例如,它是 WebSphere Application Server 的前发行版)并且客户机支持这两个协议,那么由于 z/SAS 协议是共有的,所以客户机会为该请求选择 z/SAS。
如果客户机上存在 Java 属性 com.ibm.CORBA.ConfigURL,那么认为已启用 CSIv2。如果未指定属性或指定的属性不存在,那么不启用 CSIv2。
通过在客户机端指定 com.ibm.CSI.protocol 属性选择协议,并通过服务器端的管理控制台配置它。更多详细信息包括在 SAS 和 CSIv2 属性章节中。
Common Secure Interoperability Specification V2
公共安全互操作性 V2 (CSIv2) 规范定义安全性属性服务 (SAS),该服务支持互操作认证、委派和特权。CSIv2 SAS 和 SAS 协议完全不同。CSIv2 SAS 是 CSIv2 的子组件,它支持 SSL 以及与 EJB 规范 V2.1 的互操作性。
公共安全互操作性 V2 (CSIv2) 规范定义安全性属性服务 (SAS),该服务支持互操作认证和委派。CSIv2 和 z/SAS 协议完全不同。CSIv2 SAS 是 CSIv2 的一个子组件,它支持 SSL 和互操作性。
安全性属性服务
Common Secure Interoperability Specification V2 安全性属性服务 (CSIv2 SAS) 协议旨在通用 ORB 间协议 (GIOP) 请求的服务上下文中交换其协议元素,并应答通过基于连接的传输来通信的消息。协议旨在以下环境中使用:使用传输层安全性(如通过安全套接字层 (SSL) 和传输层安全性 (TLS) 可用的传输层安全性)来提供消息保护(即,完整性和/或机密性)和服务器到客户机认证的环境。协议提供客户机认证、委派和特权功能,可以应用该功能来克服底层传输中相应的不足。CSIv2 SAS 协议通过充当较高级别的协议(可以在该协议下统一安全传输)来促进互操作性。
连接和请求拦截器
WebSphere Application Server 使用的认证协议是附加“可互操作的 ORB 间协议”(IIOP) 服务。IIOP 是用于在两个“对象请求代理”(ORB) 之间发送消息的请求和应答通信协议。对于由客户机 ORB 对服务器 ORB 发出的每个请求,服务器 ORB 反过来对客户机 ORB 作出相关应答。在任何请求传递之前,必须通过 TCP/IP 传输建立客户机 ORB 和服务器 ORB 之间的连接(SSL 是 TCP/IP 的安全版本)。客户机 ORB 调用认证协议客户机连接拦截器,它用于读取服务器上对象的 IOR 中的标记组件。正如先前提到的,就是在此处为请求建立认证策略的。给定认证策略(服务器配置和客户机配置的结合),连接的强度返回到 ORB。ORB 进行适当的连接,通常通过 SSL。
建立了连接之后,客户机 ORB 调用认证协议客户机请求拦截器,它用于发送除了由传输建立的那些安全信息之外的安全信息。此安全信息包括由服务器认证的用户标识和密码令牌、由服务器验证的特定于认证机制的令牌或者身份断言令牌。身份断言是在不需要重新认证或重新验证初始客户机的情况下一台服务器信任另一台服务器的方法。但是某些工作要求服务器信任上游服务器。此附加的安全信息随服务上下文中的消息一起发送。服务上下文具有已注册的标识,这样服务器 ORB 可以识别正在发送信息的协议的标识。
服务上下文包含唯一标识实际上是 WebSphere Application Server 同时支持 SAS 和 CSIv2 的另一种方法,因为这两种协议具有不同的服务上下文标识。客户机请求拦截器完成了将服务上下文添加到消息之后,消息发送到服务器 ORB。
服务上下文包含唯一标识实际上是 WebSphere Application Server 同时支持 z/SAS 和 CSIv2 的另一种方法,因为这两种协议具有不同的服务上下文标识。客户机请求拦截器完成了将服务上下文添加到消息之后,消息发送到服务器 ORB。
当服务器 ORB 接收到消息时,ORB 调用认证协议服务器请求拦截器。此拦截器查找协议识别的服务上下文标识。当服务器同时支持 SAS 和 CSIv2 时,会调用两个不同的服务器请求拦截器,并且这两个拦截器都查找不同的服务上下文标识。
当服务器 ORB 接收到消息时,ORB 调用认证协议服务器请求拦截器。此拦截器查找协议识别的服务上下文标识。当服务器同时支持 z/SAS 和 CSIv2 时,会调用两个不同的服务器请求拦截器,并且这两个拦截器都查找不同的服务上下文标识。
但是,仅有一个将为任何给定的请求查找服务上下文。当服务器请求拦截器查找服务上下文时,它将读服务上下文中的信息。安全服务器调用的方法用来认证或确认客户机标识。安全服务器可以拒绝信息也可以返回凭证。凭证包含从用户注册表检索到的有关客户机的附加信息,因此授权可以作出适当的决策。授权是确定用户是否能够根据应用于方法的角色和给予用户的角色来调用请求的过程。
如果 CSIv2 服务器请求拦截器没有找到服务上下文,那么拦截器进程将查看传输连接以了解是否发送了客户机证书链。当客户机与服务器之间配置了 SSL 客户机认证时,就完成了此进程。
如果找到客户机证书链,那么从证书抽取专有名称 (DN) 并将它用于映射至用户注册表中的标识。如果用户注册表是轻量级目录访问协议 (LDAP),那么在 LDAP 注册表配置中定义的搜索过滤器将确定证书如何映射至注册表中的一个条目。如果用户注册表是本地操作系统,那么专有名称 (DN) 的第一个属性映射至注册表的用户标识。此属性通常是公共名称。
如果用户注册表是轻量级目录访问协议 (LDAP),那么在 LDAP 注册表配置中定义的搜索过滤器将确定证书如何映射至注册表中的一个条目。如果用户注册表是本地操作系统,那么证书映射至系统授权工具 (SAF) 用户标识。然后可以将签发者名称或主体集名称与 SAF 证书映射工具配合使用来映射用户标识。
如果证书不映射,那么就不创建凭证并将拒绝请求。未提供有效的安全性信息时,方法请求会被拒绝,并且会将 NO_PERMISSION 异常与应答一起发送回请求者。但是,未提供安全性信息时,将 为请求创建未经认证的凭证,并且授权引擎将确定是否调用了方法。要让未经认证的凭证调用 Enterprise JavaBeans (EJB) 方法,那么没有为方法定义安全角色,或者为方法定义了特殊的“每个人”角色。
方法调用在 EJB 容器中完成时,再次调用服务器请求拦截器来完成服务器认证,并且创建新的应答服务上下文以向客户机请求拦截器通知结果。此过程通常是为了让请求有状态。发生有状态的请求时,仅客户机和服务器之间的第一个请求需要发送安全性信息。所有后续方法请求仅需要发送唯一的上下文标识,以便服务器可以查找存储在会话表中的凭证。上下文标识在客户机和服务器之间的连接内是唯一的。
最后,方法请求循环由客户机请求拦截器从服务器接收应答完成,并带有提供信息的应答服务上下文,因此客户机端有状态的上下文标识可以被确认和重新使用了。
指定有状态的客户机是通过属性 com.ibm.CSI.performStateful(true/false) 来完成的。指定有状态的服务器是通过管理控制台配置来完成的。
客户机和服务器支持有状态的和无状态会话,并且这是不可配置的。

每个请求的认证策略
给定请求的认证策略确定客户机和服务器之间的安全性保护。客户机或服务器认证协议配置可以描述必需的功能、支持的功能和不支持的功能。当客户机需要功能时,它只能与需要或支持该功能的服务器对话。当服务器需要功能时,它只能与需要或支持该功能的客户机对话。当客户机支持功能时,它可以与支持或需要该功能的服务器对话,但也可以与不支持该功能的服务器对话。当服务器支持功能时,它可以与支持或需要该功能的客户机对话,但也可以与不支持该功能的客户机对话或者选择不支持该功能。
例如,对于支持客户机证书认证的客户机,需要某些设置来生成自签名证书或者从认证中心 (CA) 获取一个证书。某些客户机可能不需要完成这些操作,因此,可以将此功能配置为“不受支持”。通过作出此项决策,客户机无法与需要客户机证书认证的安全服务器通信。相反,此客户机可以选择将用户标识和密码用作向服务器认证它自已的方法。
通常,支持功能是配置功能的最普通的方法。在运行期间它也是最成功的,因为它比需要功能的要求更为宽松。了解域中的安全服务器是如何配置的,您可以为客户机选择权限组合以成功确保方法调用并且仍能获取最大的安全性。如果知道对于客户机所有服务器都支持客户机证书和用户标识以及密码认证,您可能希望需要一个且不支持另一个认证方法。如果用户标识和密码以及客户机证书在客户机和服务器上都受支持,这两者都执行,但是在服务器上用户标识和密码优先执行。此操作基于 CSIv2 规范要求。