4.5. 使用 Kerberos 为 Web 应用提供 SSO


此情景演示了如何将 Kerberos 与 JBoss EAP 搭配使用,以便为 Web 应用提供 SSO。JBoss EAP 实例已经创建,即 EAP1,它作为单机服务器运行。已将 sampleAppAsampleAppB 这两个 Web 应用部署到 EAP1。Web 应用和 EAP1 都已配置为通过 Kerberos 使用基于桌面的 SSO 进行身份验证。

4.5.1. 安全性

JBoss EAP 使用 SPNEGO 身份验证方法通过 Kerberos 提供身份验证。有关 Kerberos 和 SPNEGO 细节的更多信息,请参阅第三方 SSO 实施部分。为了使 JBoss EAP 和部署的 Web 应用能够使用 Kerberos 进行身份验证,请创建一个 kerberos-security-factory 来连接 Kerberos 服务器。同时也创建一个安全域、角色映射器和安全域,以便将角色分配给来自 Kerberos 服务器的用户。创建一个 http-authentication-factory,它使用 kerberos-security-factory 并使用安全域进行身份验证和角色分配。身份验证机制使用 SPNEGO 身份验证机制作为 exampleSpnegoDomain 公开。undertow 子系统也配置为使用 http-authentication-factory 进行身份验证。

sampleAppAsampleAppB 都配置为使用 exampleSpnegoDomain 执行身份验证并获取用户的角色以进行授权。当安全令牌无法从操作系统传递到浏览器 ,这两个应用也可以将 FORM 身份验证配置为回退身份验证机制。如果 FORM 身份验证 配置为回退,则必须配置额外的身份验证机制以及支持的安全域。此身份验证机制独立于 Kerberos 和 SPNEGO,仅需支持 FORM 身份验证。在本例中,已经为 FORM 身份验证 配置了额外的机制和支持安全域,并作为 exampleFormDomain 公开。每个应用都配置为使用 exampleFormDomain,并提供 FORM 身份验证 作为回退。每个应用程序也被配置为保护路径 /secure/*,并提供自己的角色列表来处理授权。

4.5.2. 它如何工作

在 Kerberos 服务器中创建了以下用户:

Expand
表 4.5. Kerberos 用户
username密码

Sande

samplePass

Andrea

samplePass

Betty

samplePass

Chuck

samplePass

以下角色使用安全域映射到用户:

Expand
表 4.6. 用户角色
username角色

Sande

all

Andrea

A

Betty

B

Chuck

 

每个应用程序中也配置了以下角色:

Expand
表 4.7. 应用程序角色
应用程序/SP允许的角色

sampleAppA

所有,A

sampleAppB

所有,B

在启动时,EAP1 加载核心服务,后跟 elytron 和其他子系统。kerberos-security-factory 建立与 Kerberos 服务器的连接。sampleAppAsampleAppB 都已部署,并连接到 exampleSpnegoDomainexampleFormDomain 进行身份验证。

Sande 已登录到使用 Kerberos 保护的计算机。她打开浏览器并尝试访问 sampleAppA/secure/hello.html。由于这一点是安全的,因此需要进行身份验证。EAP1 指示浏览器向 Kerberos 服务器发送密钥请求,特别是在其计算机上配置的 Kerberos 密钥分发中心。浏览器获取密钥后,它将被发送到 sampleAppAsampleAppA 使用 exampleSpnegoDomain 将 ticket 发送到 JBoss EAP,其中将它解包并且身份验证与 kerberos-security-factory 中配置的 Kerberos 服务器一同执行。票据通过身份验证后,Sande 的角色将传回 sampleAppA 以执行授权。由于 Sande 具有 all 角色,因此她将能够访问 sampleAppA/secure/hello.html。如果 Sande 尝试访问 sampleAppB/secure/hello.html,则会出现同一个进程。由于她拥有 所有 角色,她将获得访问权限。Andrea 和 Betty 将遵循相同的流程,但 Andrea 只能访问 sampleAppA/secure/hello.html,并且没有 sampleAppB/secure/hello.html。Betty 的情况相反,它有权访问 sampleAppB/secure/hello.html,并且没有 sampleAppA/secure/hello.html。Chuck 会将身份验证传递给 sampleAppA/secure/hello.htmlsampleAppB/secure/hello.html,但不会获得对其的访问权限,因为他没有任何角色。

如果 Sande 试图从没有 Kerberos 保护的计算机访问 sampleAppA/secure/hello.html,例如,与 Office 网络连接的个人笔记本电脑,她会作为回退定向到 FORM 登录 页面。然后,她的凭据将使用回退身份验证机制进行身份验证,进程将继续获得授权。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat