使用 SPNEGO Web 认证针对 HTTP 请求进行单点登录
通过将“简单且受保护的 GSS-API 协商机制 (SPNEGO)”用作 WebSphere® Application Server 的 Web 认证服务,可以安全地协商和认证 WebSphere Application Server 中对安全资源的 HTTP 请求。
- 可以通过使用管理控制台在 WebSphere Application Server 上配置并启用 SPNEGO Web 认证和过滤器。
- 提供了 SPNEGO 动态重新装入功能,不需要停止并重新启动 WebSphere Application Server。
- 如果 SPNEGO Web 认证失败,那么将回退至应用程序登录方法。
- SPNEGO 可在 WebSphere 安全域级别上定制。有关更多信息,请参阅多个安全域。
可以启用 SPNEGO TAI 或 SPNEGO Web 认证,但不能同时启用这两项。
下列各节更详细地描述了 SPNEGO Web 认证:
什么是 SPNEGO?
SPNEGO 是简单且受保护的 GSS-API 协商机制 (IETF RFC 2478) 中定义的一项标准规范。
如果启用了 WebSphere Application Server 全局安全性和应用程序安全性,并且启用了 SPNEGO Web 认证,那么在处理第一个入站 HTTP 请求时会对 SPNEGO 进行初始化。然后,Web 认证器组件会与 SPNEGO 交互,SPNEGO 是在安全性配置库中定义并启用的。当过滤条件得到满足时,SPNEGO 会负责认证对 HTTP 请求中标识的受保护资源的访问权。
具有 Active Directory 域和相关联的 Kerberos 密钥分发中心 (KDC) 的 Microsoft Windows Server。有关受支持 Microsoft Windows Server 的信息,请参阅“Windows 上的 WebSphere Application Server V9.0 的系统需求”。
- 支持 IETF RFC 2478 中定义的 SPNEGO Web 认证机制的客户机应用程序(例如,Microsoft .NET 或 Web Service 和 J2EE 客户机)。Microsoft Internet Explorer V5.5 或更高版本以及 Mozilla Firefox V1.0 是浏览器示例。任何浏览器都必须配置为使用 SPNEGO Web 认证机制。有关执行此配置的更多信息,请参阅将客户机浏览器配置为使用 SPNEGO。
会由请求者(客户机端)触发 HTTP 请求的认证,这将生成 SPNEGO 令牌。WebSphere Application Server 将接收此令牌。具体来说,SPNEGO Web 认证会从 SPNEGO 令牌中解码并检索请求者的标识。该标识用来在请求者与应用程序服务器之间建立安全上下文。
SPNEGO Web 认证是 WebSphere Application Server 中的一种服务器端解决方案。客户端应用程序负责生成 SPNEGO 令牌供 SPNEGO Web 认证使用。WebSphere Application Server 安全性注册表中的请求者标识必须与 SPNEGO Web 认证检索到的标识完全相同。当 Microsoft Windows Active Directory 服务器是 WebSphere Application Server 中使用的“轻量级目录访问协议”(LDAP) 服务器时,该标识就会完全匹配。定制登录模块是作为插件提供的,用来支持从 Active Directory 到 WebSphere Application Server 安全性注册表的定制标识映射。
请参阅
将客户机 Kerberos 主体名称映射到 WebSphere 用户注册表标识以了解有关使用此定制登录模块的更多信息。
WebSphere Application Server 会针对其安全注册表验证该标识。如果验证成功,那么会检索客户机 Kerberos 凭单和 GSS 委派凭证并将其放置到客户机主体集中,然后会生成轻量级第三方认证 (LTPA) 安全性令牌。然后,它将一个 cookie 放入 HTTP 响应中并返回给请求者。此请求者后续发出的 HTTP 请求(用于访问 WebSphere Application Server 中的其他受保护资源)会使用先前创建的 LTPA 安全性令牌以避免发生重复登录问题。
Web 管理员对下列 SPNEGO 安全性组件及相关联配置数据具有访问权,如下图中所示:

进行 SPNEGO Web 认证的好处
将 WebSphere Application Server 用作 WebSphere Application Server 的 Web 认证服务的好处包括:
会建立使用 Active Directory 域并具有 Microsoft Windows Server 的集成单点登录环境。
- 会降低管理大量标识和密码的成本。
- 对于来自 Web 浏览器或 Microsoft .NET 客户机的安全凭证,将安全地传输这些凭证并且互相进行认证。
- 能够与在传输层使用 SPNEGO 认证的 Web Service 和 Microsoft .NET 或 Web Service 应用程序进行互操作。
- 借助 Kerberos 认证支持,SPNEGO Web 认证可为 Kerberos 解决方案提供端到端 SPNEGO 并且保存来自客户机的 Kerberos 凭证。
单个 Kerberos 领域中的 SPNEGO Web 认证
SPNEGO Web 认证在单个 Kerberos 领域中受支持。下图中显示了提问应答握手过程:

在前面的图中,发生了下列事件:
- 客户机将 HTTP/Post/Get/Web-Service 请求发送至 WebSphere Application Server。
- WebSphere Application Server 返回“HTTP 401 认证/协商”。
- 客户机获取凭单授予凭单 (TGT)。
- 客户机请求服务凭单 (TGS_REQ)。
- 客户机获取服务凭单 (TGS_REP)。
- 客户机将 HTTP/Post/Get/Web-Service 和授权 SPNEGO 令牌发送至 WebSphere Application Server。
- WebSphere Application Server 验证 SPNEGO 令牌。如果验证成功,那么它会从 SPNEGO 令牌检索用户标识和 GSS 委派凭证。请使用客户机 Kerberos 凭证创建 KRBAuthnToken。
- WebSphere Application Server 会使用 WebSphere 用户注册表来验证用户标识并创建 LTPA 令牌。
- WebSphere Application Server 会将 HTTP 200、内容以及 LTPA 令牌返回到客户机。
可信 Kerberos 领域中的 SPNEGO Web 认证
SPNEGO Web 认证在可信 Kerberos 领域中也受支持。下图中显示了提问应答握手过程:

在前面的图中,发生了下列事件:
- 客户机将 HTTP/Post/Get/Web-Service 请求发送至 WebSphere Application Server。
- WebSphere Application Server 返回“HTTP 401 认证/协商”
- 客户机获取凭单授予凭单 (TGT)。
- 客户机从 REALM1 KDC 中为 REALM2 请求跨领域凭单 (TGS_REQ)。
- 客户机使用来自步骤 4 的跨领域凭单以从 REALM2 KDC 请求服务凭单。
- 客户机将 HTTP/Post/Get/Web-Service 和授权 SPNEGO 令牌发送至 WebSphere Application Server。
- WebSphere Application Server 验证 SPNEGO 令牌。如果验证成功,那么它会从 SPNEGO 令牌检索用户标识和 GSS 委派凭证。请使用客户机 Kerberos 凭证创建 KRBAuthnToken。
- WebSphere Application Server 会使用 WebSphere 用户注册表来验证用户标识并创建 LTPA 令牌。
- WebSphere Application Server 会将 HTTP 200、内容以及 LTPA 令牌返回到客户机。
在可信 Kerberos 领域环境中,请注意下列事项:
- Kerberos 可信领域设置必须在每个 Kerberos KDC 上完成。请参阅 Kerberos Administrator and User's Guide,以获取有关如何设置 Kerberos 可信领域的更多信息。
- 在 WebSphere
用户注册表中,可能不存在来自 SPNEGO 令牌的
Kerberos 客户机主体名称;Kerberos 主体至 WebSphere 用户注册表的映射可能需要此名称。
请阅读
将客户机 Kerberos 主体名称映射到 WebSphere 用户注册表标识以了解更多信息。
有关使用 HTTP 协议向 Java™ 客户机进行 SPNEGO Web 认证的支持信息
- 同一林中的域信任
- 不同林中的域之间直接实现外部域信任。
- Kerberos 领域信任
- 跨林信任
- 林外部信任
有关向浏览器客户端进行 SPNEGO Web 认证的支持信息
- 跨林信任
- 同一林中的域信任
- Kerberos 领域信任
- 林外部信任
- 域外部信任