Menu Close
Settings Close

Language and Page Formatting Options

5.7. 使用 Kerberos 为 Web 应用程序提供 SSO

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

scenario7

5.7.1. 安全性

JBoss EAP 支持通过 SPNEGO 和 JBoss Negotiation 在 Web 应用程序中使用 Kerberos 作为 SSO。有关 Kerberos 和 SPNEGO 细节的更多信息,请参阅第三方 SSO 实施部分。要让 JBoss EAP 和部署的 Web 应用能够使用 Kerberos 进行身份验证,必须创建两个安全域:第一个安全域 host-domain 配置有 kerberos 登录模块以连接到 Kerberos 服务器。这使得 JBoss EAP 能够在容器级别进行身份验证。第二个安全域 spnego-domain 使用两个登录模块创建。个使用 spnego 登录模块连接到 host-domain 以 验证用户的身份。第二个模块可以使用任何其他登录模块加载用于授权决策的角色信息,例如,UsersRoles 使用属性文件将用户映射到角色。

这两个登录模块也利用 password-stacking 将 授权模块中的用户和角色与身份验证登录模块中的用户映射。EAP1 同时配置 host-domainspnego-domain。通过 web.xmljboss-web.xml 配置应用,以使用 spnego-domain 进行身份验证并获取用户的角色进行身份验证。如果无法将安全令牌从操作系统传递到浏览器,则应用也可以将 FORM 身份验证配置为回退身份验证机制。如果 FORM 身份验证配置为回退,则必须配置额外的安全域来支持它。此安全域独立于 Kerberos 和 SPNEGO,并且仅支持 FORM 身份验证,即用户名和密码验证以及角色。每个应用都配置为使用 spnego-domain,并提供 FORM 身份验证作为回退。每个应用程序也被配置为保护路径 /secure/*,并提供自己的角色列表来处理授权。

5.7.1.1. 它如何工作

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

表 5.9. Kerberos 用户

username密码

Brent

samplePass

Andy

samplePass

Bill

samplePass

ron

samplePass

以下角色通过一个额外的模块映射到用户,该模块通过将 password-stacking 选项设置为 使用FirstPass 来串联:

表 5.10. 用户角色

username角色

Brent

all

Andy

A

Bill

B

ron

 

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

表 5.11. 应用程序角色

应用程序/SP允许的角色

sampleAppA

所有,A

sampleAppB

所有,B

在启动时,EAP1 加载核心服务,后跟 security 和其他子系统。host-domain 建立与 Kerberos 服务器的连接,并且 spnego-domain 连接到 host-domainsampleAppAsampleAppB 已部署并连接到 spnego-domain 进行身份验证。

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

如果 Andy 试图从未由 Kerberos 保护的计算机访问 sampleAppA/secure/hello.html,例如连接到 Office 网络的个人笔记本电脑,他将被定向到 FORM 登录页面,作为回退登录机制。然后,他的凭据将通过回退安全域进行身份验证,进程将继续获得授权。





在 2022-07-02 18:10:02 +1000 上修订