4.3. 使用新身份存储保护管理接口和应用程序

此方案演示了 JBoss EAP 中的管理接口和应用如何通过 Elytron 中的新身份存储进行保护。sampleApp2.war 应用已部署到 JBoss EAP,并且配置为使用 basicExampleDomain

4.3.1. 安全性

JBoss EAP 能够通过 ManagementRealm 和 ApplicationRealm 之外的身份存储来保护管理接口和应用程序。借助 Elytron,同一身份存储可用于保护管理接口和应用的安全,但您仍然可以选择为每个用户设置单独的身份存储。身份存储由安全域表示,例如 filesystem-realmjdbc-realmldap-realm。在本示例中,已创建了名为 exampleRealmfilesystem-realm。还创建了一个名为 exampleDomain 的安全域,它使用 exampleRealm 作为身份存储,group -to-roles 角色 映射器对 exampleRealm 提供的组信息进行解码,使用 default-permission-mapper 进行映射权限。

对于 HTTP 身份验证,已创建 http-authentication-factory,名为 exampleHttpAuthFactory。它使用 全局 HTTP 服务器工厂机制和 exampleDomain 进行身份验证。它还有两种机制配置:使用 BASIC 验证方法之一公开为 basicExampleDomain,它使用 DIGEST 身份验证方法作为 摘要ExampleDomain。HTTP 管理接口已配置为使用 exampleHttpAuthFactoryundertow 子系统也配置了一个新的 application-security-domain, 它也使用 exampleHttpAuthFactory。应用 sampleApp2.war 已配置为使用 基本ExampleDomain 和 BASIC 身份验证。

对于 SASL 身份验证,创建了一个名为 exampleSa slAuthFactory 的 sasl -authentication-factory。它使用 配置的 SASL 服务器工厂和 exampleDomain 进行身份验证。它还配置了 DIGEST-MD5 身份验证机制,它作为 摘要MD5ExampleDomain 公开。管理接口的 SASL 配置已设置为使用 exampleSaslAuthFactory

4.3.2. 它如何工作

exampleRealm 中添加了以下用户:

表 4.2. 示例Realm用户

username密码角色

文莱

samplePass

示例

Issac

samplePass

guest

在启动时,JBoss EAP 加载核心服务并启动 undertowelytron 子系统。这可保护管理接口并公开 基本ExampleDomain、secdExampleDomain 和 summary MD5ExampleDomain (部署至 JBoss EAP 的应用)。

加载 sampleApp2.war 后,它会查找 basicExampleDomain 来为其安全 URL 提供身份验证和授权。它有两个 HTML 文件,/hello.html/secure/hello.html,并使用 BASIC 身份验证来保护路径 /secure/*。它要求 sample 角色访问任何安全 URL。

用户进行身份验证时,将使用特定的机制提交其凭据,具体取决于他们如何访问 JBoss EAP。例如,如果用户尝试使用 HTTP 和 DIGEST 身份验证访问管理控制台,他们将使用公开为 摘要ExampleDomain 的 DIGEST 身份验证方法进行身份验证。如果他们尝试使用带有 BASIC 身份验证的 HTTP 访问 sampleApp2.war,则将使用公开为 basicExampleDomain 的 BASIC 身份验证方法进行身份验证。如果他们尝试使用 SASL 通过 DIGEST 身份验证访问管理 CLI,则将使用公开为 摘要MD5ExampleDomain 的 DIGEST-MD5 进行身份验证。HTTP 身份验证机制使用 exampleHttpAuthFactory,SASL 身份验证机制则使用 exampleSaslAuthFactory。使用 exampleDomain 验证工厂处理身份验证和角色映射。

如果文莱或 Issac 试图访问管理界面,系统会提示它们输入用户名和密码。成功登录后,他们分别能够执行管理操作。

当文稿或 Issac 请求 /hello.html 时,他们可以查看该页面而不进行身份验证。当文莱或 Issac 尝试请求 /secure/hello.html 时,系统会提示他们输入用户名和密码。成功登录后,文莱能够查看 /secure/hello.html,因为他拥有 示例 角色,但 Issac 将无法查看 /secure/hello.html,因为他拥有 guest 角色。所有其他用户均可在不登录的情况下访问 /hello.html,但是任何用户都无法访问 /secure/hello.html,因为的订阅和 Issac 是 exampleRealm 中唯一的用户。