搜索

3.2. 配置安全域以使用数据库

download PDF

与 LDAP 类似,安全域可以配置为使用数据库通过登录模块进行身份验证和授权。

3.2.1. 数据库登录模块

Database 登录模块是基于 Java 数据库连接(JDBC)登录模块,支持身份验证和角色映射。如果用户名、密码和角色信息存储在关系数据库中,则使用此登录模块。

这可以通过以预期格式提供对逻辑表的引用,包含主体和角色。例如:

Table Principals(PrincipalID text, Password text) Table Roles(PrincipalID text, Role text, RoleGroup text)

Principals 表将用户 PrincipalID 与有效密码关联,PrincipalID 将用户 PrincipalID 与其 角色集 相关联。用于用户权限的角色必须包含在 RolesRoleGroup 列值的一行中。

表是逻辑的,用户可以指定登录模块使用的 SQL 查询。唯一的要求是 java.sql.ResultSet 具有与前面描述的 PrincipalsRoles 表相同的逻辑结构。表和列的实际名称无关,因为根据列索引访问结果。

为了说明此概念,请考虑一个包含已声明的表格 (PrincipalsRoles )的数据库。以下语句使用以下数据填充表:

  • PrincipalID java,在 Principals 表中密码为 echoman
  • PrincipalID java,角色在 Roles 中的 RolesRoleGroup 中名为 Echo
  • PrincipalID java,角色在 Roles 表中的 CallerPrincipalRoleGroup 中具有名为 caller -java 的角色

有关 Database 登录模块配置选项的完整列表,请参阅 JBoss EAP 登录模块参考中的 Database 登录模块部分

3.2.1.1. 配置安全域以使用数据库登录模块

在将安全域配置为使用 Database 登录模块之前,必须正确配置数据源。

有关在 JBoss EAP 中创建和配置数据源的更多信息,请参见 JBoss EAP 配置指南中的数据源管理部分

正确配置了数据源后,可以将安全域配置为使用 Database 登录模块。以下示例假定已创建了名为 MyDatabaseDS 的数据源,并使用以下数据库进行了正确配置:

CREATE TABLE Users(username VARCHAR(64) PRIMARY KEY, passwd VARCHAR(64))
CREATE TABLE UserRoles(username VARCHAR(64), role VARCHAR(32))

用于添加数据库登录模块的 CLI 命令

/subsystem=security/security-domain=testDB:add

/subsystem=security/security-domain=testDB/authentication=classic:add

/subsystem=security/security-domain=testDB/authentication=classic/login-module=Database:add(code=Database,flag=required,module-options=[("dsJndiName"=>"java:/MyDatabaseDS"),("principalsQuery"=>"select passwd from Users where username=?"),("rolesQuery"=>"select role, 'Roles' from UserRoles where username=?")])

reload

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.