搜索

1.2. 创建 JDBC 域

download PDF

1.2.1. 在 Elytron 中创建一个 jdbc-realm

创建一个 jdbc-realm 和一个引用域的安全域,来保护 JBoss EAP 服务器接口或部署在服务器上的应用程序。

此流程中的示例使用了 PostgreSQL 数据库,其配置如下:

  • 数据库名称:postgresdb
  • 数据库登录凭证:

    • 用户名: postgres
    • 密码: postgres
  • 表名称:example_jboss_eap_users
  • example_jboss_eap_users 内容:

    用户名密码角色

    user1

    passwordUser1

    Admin

    user2

    passwordUser2

    Guest

先决条件

  • 您已配置了包含用户的数据库。
  • JBoss EAP 正在运行。
  • 您已下载了合适的 JDBC 驱动程序。

流程

  1. 使用管理 CLI为数据库部署数据库驱动程序。

    语法

    deploy <path_to_jdbc_driver>/<jdbc-driver>

    Example

    deploy PATH_TO_JDBC_DRIVER/postgresql-42.2.9.jar

  2. 将数据库配置为数据源。

    语法

    data-source add --name=<data_source_name> --jndi-name=<jndi_name> --driver-name=<jdbc-driver>  --connection-url=<database_URL> --user-name=<database_username> --password=<database_username>

    Example

    data-source add --name=examplePostgresDS --jndi-name=java:jboss/examplePostgresDS --driver-name=postgresql-42.2.9.jar  --connection-url=jdbc:postgresql://localhost:5432/postgresdb --user-name=postgres --password=postgres

  3. 在 Elytron 中创建一个 jdbc-realm

    语法

    /subsystem=elytron/jdbc-realm=<jdbc_realm_name>:add(principal-query=[<sql_query_to_load_users>])

    Example

    /subsystem=elytron/jdbc-realm=exampleSecurityRealm:add(principal-query=[{sql="SELECT password,roles FROM example_jboss_eap_users WHERE username=?",data-source=examplePostgresDS,clear-password-mapper={password-index=1},attribute-mapping=[{index=2,to=Roles}]}])
    {"outcome" => "success"}

    注意

    示例演示了如何从单个 principal-query 中获取密码和角色。如果您需要多个查询来获取角色或额外的身份验证或授权信息,您还可以创建具有额外 attribute-mapping 属性的 principal-query

    有关支持的密码映器的列表,请参阅 密码映射器

  4. 创建一个引用 jdbc-realm 的安全域。

    语法

    /subsystem=elytron/security-domain=<security_domain_name>:add(default-realm=<jdbc_realm_name>,permission-mapper=default-permission-mapper,realms=[{realm=< jdbc_realm_name>,role-decoder="<role_decoder_name>"}])

    Example

    /subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm}])
    {"outcome" => "success"}

验证

  • 要验证 Elytron 是否可以从数据库加载数据,请使用以下命令:

    语法

    /subsystem=elytron/security-domain=<security_domain_name>:read-identity(name=<username>)

    Example

    /subsystem=elytron/security-domain=exampleSecurityDomain:read-identity(name=user1)
    {
        "outcome" => "success",
        "result" => {
            "name" => "user1",
            "attributes" => {"Roles" => ["Admin"]},
            "roles" => ["Admin"]
        }
    }

    输出确认 Elytron 可以从数据库加载数据。

现在,您可以使用创建的安全域来向管理界面和应用程序添加身份验证和授权。如需更多信息,请参阅 保护管理界面和应用程序

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.