安全性属性传播
和安全属性传播, WebSphere® Application Server可以将安全属性(经过身份验证的主体内容和安全上下文信息)从一台服务器传输到您配置中的另一台服务器。 WebSphere Application Server可以从企业用户注册表(查询静态属性)或自定义登录模块(可以查询静态或动态属性)获取这些安全属性。 动态安全性属性(这些属性在本质上是定制属性)可能包括用于连接的认证强度、原始调用者的标识、原始调用者的位置和原始调用者的 IP 地址等等。
安全属性传播使用 Java™ 序列化为主体集所包含的任何对象提供传播服务。 但是,Java 代码必须能够序列化和反序列化这些对象。 Java 编程语言指定了 Java 代码如何序列化对象的规则。 由于处理不同平台和软件版本时可能会出现问题, WebSphere Application Server还提供了支持自定义序列化功能的令牌框架。 令牌框架还具有其他好处,包括识别令牌唯一性的能力。 此唯一性确定了如何高速缓存主体集以及令牌的目的。 令牌框架定义了四个标记令牌接口,使WebSphere Application Server运行时来确定如何传播令牌。
和WebSphere Application Server版本6.0稍后,可以配置自定义 Java 容器授权契约 (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定义默认值SingleSignonToken令牌LtpaToken名称和版本 2。 添加的 Cookie 名称为LtpaToken2 。 不要将敏感信息、机密信息或未加密的数据添加到响应 cookie。
也建议您在任何时候使用 Cookie 时,都要使用安全套接字层 (SSL) 协议来保护请求。 使用 SSO 令牌,Web 用户在跨多个平台访问 Web 资源时只需进行一次身份验证WebSphere Application Server秒。 定制 SSO 令牌通过将定制处理添加到单点登录方案来扩展此功能。 有关 SSO 令牌的更多信息,请参阅配置单点登录。 有关如何使用和实现此令牌类型的信息,请参阅使用默认单点登录令牌与默认或自定义令牌工厂来传播安全属性和为安全属性传播实施自定义单点登录令牌。
- 传播令牌
- 由于传播令牌不与已认证的用户关联,所以它不存储在主体集中。 相反,传播令牌存储在线程上,并遵循它在任何地方的调用。 当一个请求发送出站到另一台服务器时,随该请求发送该线程上的传播令牌,并由目标服务器运行这些令牌。 存储在线程上的属性会被传播,无论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。 您可以将其放入主体集,它可供应用程序使用。 当您进行身份验证时,会创建此令牌WebSphere Application Server使用 SPNEGO web 或Kerberos验证。
水平传播与下游传播比较
在WebSphere Application Server,水平传播(使用单点登录进行 Web 请求)和下游传播(使用 Internet Inter-ORB 协议上的远程方法调用 (RMI/IIOP) 访问企业 Bean)均可用。
水平传播
在水平传播中,安全性属性在前端服务器之间传播。 序列化的安全性属性(主体集内容和传播令牌可以包含静态和动态属性。 单点登录 (SSO) 令牌存储水平传播所需的其他特定于系统的信息。 包含在 SSO 中的信息告诉接收服务器源服务器的位置以及如何与该服务器通信。 此外,SSO 令牌也包含查找已序列化属性的键。 要启用水平传播,必须配置单点登录令牌和 Web 入站安全性属性传播功能。 可以使用管理控制台来配置这两项功能。

水平传播的性能含义
JMX 远程调用的执行情况会随您的环境而变化。 JMX 远程调用用于获取原始登录属性。 在远程用户注册表调用会导致应用程序发生大量性能问题的情况下,使用水平传播能大大减少这些调用。 但是,这些对象的反序列化也可能导致性能降低,不过该降低可能比远程用户注册表调用要少。 建议您在启用 和禁用水平传播的情况下分别测试您的环境。 在您必须为保留原始登录属性使用水平传播的情况下,测试在您 的环境中 JMX 是否提供了更好的性能。
安全性高速缓存 (WSSecureMap)
在图 1 中,安全性高速缓存 (WSSecureMap) 是用于安全性属性传播的动态高速缓存。 WSSecureMap 高速缓存存储用于重新创建用户凭证的安全性属性;它随着登录的用户数而扩展。 WSSecureMap 的缺省生命周期与 LTPA 令牌超时相同。 即,用户注销时会释放 WSSecureMap 高速缓存条目。 WSSecureMap 的使用模式是定期使用。
您可以设置WSSecureMap管理控制台中的缓存大小,并定义com.ibm.ws.security.WSSecureMapInitAtStartup和com.ibm.ws.security.WSSecureMapSize控制缓存的使用方式。
下游传播
在下游传播中,主体集由传播登录或用户注册表登录在 Web 前端服务器上生成。 WebSphere Application Server当启用远程方法调用 (RMI) 出站和入站传播时,将企业 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 EERunAs配置不会导致应用服务器丢失原始调用者的信息。 此信息存储在位于正在运行的线程上的 PropagationToken 中。
- 启用第三方提供程序以插入定制令牌。 令牌接口包含 getBytes 方法,此方法使令牌实现能定义定制序列 化和/或加密方法。
- 使不同提供程序创建的同一主体集中能有多个同一类型的令牌。 WebSphere Application Server可以为同一目的处理多个令牌。 例如,一个主体集中能有多个授权令牌,并且每个授权令牌能由不同提供程序生 成的独特的授权属性。
- 使每个令牌类型能具有唯一标识,在动态属性可能更改用户登录上下文的情况下,使用此标识比只使用用户名更能表示主体集标识的唯一性。 令牌类型有 getUniqueId() 方法,其用于返回用于高速缓存的唯一字符串。 例如,您可能需要传播位置标识,其表明用户登录系统的位置。 此位置标识可以在初始登录期间使用逆向代理服务器或 WEB_INBOUND 登录配置生成,并在序列化之前添加到主体集。 也可以将其他属性添加到主体集,并使用唯一标识。 必须为整个主体集的唯一性考虑所有唯一标识。 WebSphere Application Server能够指定主题中信息的独特之处,这可能会影响用户以后访问该主题的方式。