安全性属性传播

通过安全性属性传播WebSphere® Application Server 可以将安全性属性(已认证的主体集内容和安全上下文信息)从配置中的一台服务器传输到另一台服务器。WebSphere Application Server 可能从查询静态属性的企业用户注册表,或可以查询静态或动态属性的定制登录模块获取这些安全性属性。动态安全性属性(这些属性在本质上是定制属性)可能包括用于连接的认证强度、原始调用者的标识、原始调用者的位置和原始调用者的 IP 地址等等。

安全性属性传播为包含在主体集中的任何对象提供使用 Java™ 序列化的传播服务。但是,Java 代码必须能够对这些对象进行序列化和反序列化。Java 编程语言为 Java 代码可以如何序列化对象指定规则。因为在处理不同软件平台和版本时会发生问题,所以 WebSphere Application Server 也提供启用定制序列化功能的令牌框架。令牌框架还具有其他好处,包括识别令牌唯一性的能力。此唯一性确定了如何高速缓存主体集以及令牌的目的。令牌框架定义了四种标记令牌接口,他们使 WebSphere Application Server 运行时能够确定如何传播令牌。

要点: WebSphere Application Server 不会将在此框架中使用的任何定制令牌用于授权或认证。此框架作为一种方法来通知 WebSphere Application Server 您希望这些令牌以一种特殊的方法传播。WebSphere Application Server 处理传播详细信息,但不处理定制令牌的序列化和反序列化。这些定制令牌的序列化和反序列化由实现执行,并由定制登录模块处理。

对于 WebSphere Application Server 6.0 和更高版本,可以将定制 Java Authorization Contract for Container (JACC) 提供程序配置为对 Java Platform, Enterprise Edition (Java EE) 应用程序强制执行访问控制。定制 JACC 提供程序可以在作出访问控制决策时浏览调用者 JAAS 主体集中的定制安全性属性。

认证请求时,登录模块确定这个请求是初始登录还是传播登录。初始登录是认证用户信息(通常是用户标识和密码)的过程,然后为远程用户注册表呼叫应用程序编程接口 (API) 以查找代表用户访问权限的安全性属性。传播登录是验证用户信息(通常是轻量级第三方认证 (LTPA) 令牌)的过程,然后反序列化一系列 WebSphere Application Server 已知的组成定制对象和令牌框架对象的令牌。

在框架中引入了以下标记令牌:
授权令牌
授权令牌由大多数要传播的授权相关的安全性属性组成。WebSphere Application Server 授权引擎使用缺省授权令牌作出 Java Platform, Enterprise Edition (Java EE) 授权决策。服务提供程序可以使用定制授权令牌实现来隔离他们在不同令牌中的数据,执行定制序列化和反序列化,并在适当时间使用服务提供程序令牌中的信息作出定制授权决策。有关如何使用并实现此令牌类型的信息,请参阅使用缺省传播令牌来传播安全性属性实现定制传播令牌以进行安全性属性传播
单点登录 (SSO) 令牌
已添加到主体集的定制 SingleSignonToken 令牌作为 HTTP cookie 被自动添加到响应,并包含发送回 Web 浏览器的属性。令牌接口 getName 方法与 getVersion 方法一起定义 Cookie 名。WebSphere Application Server 定义了具有 LtpaToken 名和 V2 的缺省 SingleSignonToken 令牌。添加的 cookie 名是 LtpaToken2。不要将敏感信息、机密信息或未加密的数据添加到响应 cookie。

也建议您在任何时候使用 Cookie 时,都要使用安全套接字层 (SSL) 协议来保护请求。使用 SSO 令牌,Web 用户可在跨多个 WebSphere Application Server 访问 Web 资源时只认证一次。定制 SSO 令牌通过将定制处理添加到单点登录方案来扩展此功能。有关 SSO 令牌的更多信息,请参阅实现单点登录以最小化 Web 用户认证。有关如何使用并实现此令牌类型的信息,请参阅使用带有缺省或定制令牌工厂的缺省单点登录令牌来传播安全性属性实现定制单点登录令牌以进行安全性属性传播

传播令牌
由于传播令牌不与已认证的用户关联,所以它不存储在主体集中。相反,传播令牌存储在线程上,并遵循它在任何地方的调用。当一个请求发送出站到另一台服务器时,随该请求发送该线程上的传播令牌,并由目标服务器运行这些令牌。无论 Java Platform, Enterprise Edition (Java EE) RunAs 用户如何变换,都将传播线程上存储的属性。

缺省传播令牌监视并记录所有的用户变换和主机变换。您可以使用 WSSecurityHelper 应用程序编程接口 (API) 将其他信息添加到缺省传播令牌。要检索并设置传播令牌的定制实现,您可以使用 WSSecurityPropagationHelper 类。有关如何使用并实现此令牌类型的信息,请参阅使用缺省传播令牌来传播安全性属性实现定制传播令牌以进行安全性属性传播

认证令牌
认证令牌流到下游服务器并包含用户的身份。此类型的令牌提供的功能与前版本轻量级第三方认证 (LTPA) 令牌提供的功能相同。虽然此令牌类型通常是出于内部 WebSphere Application Server 目的保留的,但您可以将此令牌添加到主体集,并使用令牌接口的 getBytes 方法传播此令牌。

只在服务提供程序想将认证令牌添加到主体集时才使用定制认证令牌。由于存在 WebSphere Application Server 认证使用的缺省认证令牌,因此 WebSphere Application Server 认证并不使用该令牌。服务提供程序可使用此令牌类型来标识定制数据如何使用该令牌来执行定制认证决策。有关如何使用并实现此令牌类型的信息,请参阅缺省认证令牌实现定制认证令牌以进行安全性属性传播

Kerberos 认证令牌
Kerberos 认证令牌包含 Kerberos 凭证,例如 Kerberos 主体名称、GSSCredential 和 Kerberos 委派凭证。此令牌将传播到下游服务器。虽然此令牌类型通常是保留供 WebSphere Application Server 在内部使用的,但如果它包含 GSSCredential,那么您可以使用 getGSSCredential 方法来抽取 GSSCredential。您可以将其放入主体集,它可供应用程序使用。使用 SPNEGO Web 或 Kerberos 认证向 WebSphere Application Server 认证时,将创建此令牌。

水平传播与下游传播比较

WebSphere Application Server 中,为 Web 请求使用单点登录的水平传播和在因特网 ORB 间协议 (RMI/IIOP) 上使用远程方法调用访问企业 Bean 的下游传播都是可用的。

水平传播

在水平传播中,安全性属性在前端服务器之间传播。序列化的安全性属性(主体集内容和传播令牌可以包含静态和动态属性。单点登录 (SSO) 令牌存储水平传播所需的其他特定于系统的信息。包含在 SSO 中的信息告诉接收服务器源服务器的位置以及如何与该服务器通信。此外,SSO 令牌也包含查找已序列化属性的键。要启用水平传播,必须配置单点登录令牌和 Web 入站安全性属性传播功能。可以使用管理控制台来配置这两项功能。

当前端服务器已配置并且在同一数据复制服务 (DRS) 复制域中时,应用程序服务器将已序列化的信息自动传播到同一域中的所有服务器上。在图 1 中,应用程序 1 部署在服务器 1 和服务器 2 上,并且这两个服务器都是同一 DRS 复制域的成员。如果从服务器 1 上的应用程序 1 发出请求,然后该请求被重定向到服务器 2 上的应用程序 1,那么在没有其他远程请求的情况下可以在服务器 2 上找到初始登录属性。

但是,如果从服务器 1 或服务器 2 上的应用程序 1 发出请求,但请求被重定向到服务器 1 或服务器 2 上的应用程序 2,那么不能在 DRS 高速缓存中找到序列化的信息,因为服务器没有配置在相同的复制域。因此,远程 Java 管理扩展 (JMX) 请求将发送回主管应用程序 1 的源服务器以获取序列化的信息,以便该应用程序可以获得原始登录信息。通过使用单个 JMX 远程调用将序列化的信息返回源服务器,可实现以下好处:
  • 您从原始服务器获得检索登录信息的功能。
  • 由于应用程序服务器可以从已序列化的信息重新生成主体集,因此您不需要执行任何远程用户注册表调用。如果没有此能力,应用程序服务器可能要进行 5 到 6 次独立的远程调用。
图 1. 水平传播水平传播

水平传播的性能含义

DRS 或 JMX 远程调用的执行情况会随您的环境而变化。DRS 或 JMX 远程调用用于获取原始登录属性。在远程用户注册表调用会导致应用程序发生大量性能问题的情况下,使用水平传播能大大减少这些调用。但是,这些对象的反序列化也可能导致性能降低,不过该降低可能比远程用户注册表调用要少。建议您在启用 和禁用水平传播的情况下分别测试您的环境。在您必须为保留原始登录属性使用水平传播的情况下,测试在您 的环境中是 DRS 还是 JMX 提供了更好的性能。通常,建议您配置 DRS(出于故障转移和性能原因)。但是,由于 DRS 将信息传播给同一复制域中的所有服务器(不管这些服务器是否都要访问),因此如果同一复制域 中服务器太多,性能就会降低。在这种情况下,应该减少复制域中的服务器数或不要配置 DRS 复制域中的服务器。不配置 DRS 复制域中的服务器会使 JMX 远程调用在需要时检索属性,这可能在整体上更快些。

安全性高速缓存 (WSSecureMap)

在图 1 中,安全性高速缓存 (WSSecureMap) 是用于安全性属性传播的动态高速缓存。WSSecureMap 高速缓存存储用于重新创建用户凭证的安全性属性;它随着登录的用户数而扩展。WSSecureMap 的缺省生存期与 LTPA 令牌超时相同。即,用户注销时会释放 WSSecureMap 高速缓存条目。WSSecureMap 的使用模式是定期使用。

在管理控制台中设置 WSSecureMap 高速缓存大小(安全性 > 全局安全性 > 定制属性 > 新建),并定义 com.ibm.ws.security.WSSecureMapInitAtStartupcom.ibm.ws.security.WSSecureMapSize 以控制如何使用该高速缓存。

下游传播

下游传播中,主体集由传播登录或用户注册表登录在 Web 前端服务器上生成。当启用了远程方法调用 (RMI) 出站和入站传播时,WebSphere Application Server 为企业 Bean 调用传播安全信息下游。

传播安全性属性的好处

WebSphere Application Server 的安全性属性传播特性具有以下好处:

  • 启用 WebSphere Application Server 以使用安全性属性信息进行认证和授权。传播了安全性属性就不必于调用期间在每个远程中继段进行用户注册表调用。WebSphere Application Server 的先前版本仅传播已认证的用户的用户名,而忽略其他需要使用远程用户注册表调用重新生成下游的安全性属性信息。要强调此新功能的好处,请考虑以下示例:

    在先前的发行版中,您可以使用逆向代理服务器 (RPSS)(如 WebSEAL)来认证用户、收集组信息并收集其他安全性属性。如先前所述,WebSphere Application Server 接受已认证的用户的标识,但它忽略其他安全性属性信息。要创建 Java 认证和授权服务 (JAAS) 主体集(包含所需的 WSCredential 和 WSPrincipal 对象),WebSphere Application Server 要对用户注册表进行 5 到 6 次的调用。WSCredential 对象包含对 Java EE 资源进行授权所需的各种安全信息。WSPrincipal 对象包含表示主体集的主体的域名和用户。

    在应用程序服务器的当前发行版中,WebSphere Application Server 可以使用从逆向代理服务器获取的信息,并将这些信息传播到下游其他服务器资源,而不必再调用用户注册表。如果保留了安全性属性信息,那么您能够通过进行适当的授权并作出基于信任的决策来正确地保护服务器资源。由于 Java EE RunAs 配置而引起的用户变换不会导致应用程序服务器丢失原始调用者信息。此信息存储在位于正在运行的线程上的 PropagationToken 中。

  • 启用第三方提供程序以插入定制令牌。令牌接口包含 getBytes 方法,此方法使令牌实现能定义定制序列 化和/或加密方法。
  • 使不同提供程序创建的同一主体集中能有多个同一类型的令牌。出于同一目的,WebSphere Application Server 可以处理多个令牌。例如,一个主体集中能有多个授权令牌,并且每个授权令牌能由不同提供程序生 成的独特的授权属性。
  • 使每个令牌类型能具有唯一标识,在动态属性可能更改用户登录上下文的情况下,使用此标识比只使用用户名更能表示主体集标识的唯一性。令牌类型有 getUniqueId() 方法,其用于返回用于高速缓存的唯一字符串。例如,您可能需要传播位置标识,其表明用户登录系统的位置。此位置标识可以在初始登录期间使用逆向代理服务器或 WEB_INBOUND 登录配置生成,并在序列化之前添加到主体集。也可以将其他属性添加到主体集,并使用唯一标识。必须为整个主体集的唯一性考虑所有唯一标识。WebSphere Application Server 能够指定在主体集信息中什么是唯一的,这种唯一性会影响以后用户访问主体集的方式。

指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=csec_secattributeprop
文件名:csec_secattributeprop.html