4.3. 使用新身份存储保护管理接口和应用程序
此方案演示了 JBoss EAP 中的管理接口和应用如何通过 Elytron 中的新身份存储进行保护。sampleApp2.war
应用已部署到 JBoss EAP,并且配置为使用 basicExampleDomain
。
4.3.1. 安全性
JBoss EAP 能够通过 ManagementRealm 和
之外的身份存储来保护管理接口和应用程序。借助 Elytron,同一身份存储可用于保护管理接口和应用的安全,但您仍然可以选择为每个用户设置单独的身份存储。身份存储由安全域表示,例如 ApplicationRealm
filesystem-realm
、jdbc-realm
或 ldap-realm
。在本示例中,已创建了名为 exampleRealm
的 filesystem-realm
。还创建了一个名为 exampleDomain
的安全域,它使用 exampleRealm
作为身份存储,group -to-roles 角色
映射器对 exampleRealm
提供的组信息进行解码,使用 default-permission-mapper
进行映射权限。
对于 HTTP 身份验证,已创建 http-authentication-factory
,名为 exampleHttpAuthFactory
。它使用 全局
HTTP 服务器工厂机制和 exampleDomain
进行身份验证。它还有两种机制配置:使用 BASIC
验证方法之一公开为 basicExampleDomain
,它使用 DIGEST
身份验证方法作为 摘要ExampleDomain
。HTTP 管理接口已配置为使用 exampleHttpAuthFactory
。undertow
子系统也配置了一个新的 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 加载核心服务并启动 undertow
和 elytron
子系统。这可保护管理接口并公开 基本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
中唯一的用户。