1.2. 创建 JDBC 域
1.2.1. 在 Elytron 中创建一个 jdbc-realm 复制链接链接已复制到粘贴板!
创建一个 jdbc-realm 和一个引用域的安全域,来保护 JBoss EAP 服务器接口或部署在服务器上的应用程序。
此流程中的示例使用了 PostgreSQL 数据库,其配置如下:
- 数据库名称:postgresdb
数据库登录凭证:
- 用户名: postgres
- 密码: postgres
- 表名称:example_jboss_eap_users
example_jboss_eap_users 内容:
Expand 用户名 密码 角色 user1
passwordUser1
Admin
user2
passwordUser2
Guest
先决条件
- 您已配置了包含用户的数据库。
- JBoss EAP 正在运行。
- 您已下载了合适的 JDBC 驱动程序。
流程
使用管理 CLI为数据库部署数据库驱动程序。
语法
deploy <path_to_jdbc_driver>/<jdbc-driver>
deploy <path_to_jdbc_driver>/<jdbc-driver>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
deploy PATH_TO_JDBC_DRIVER/postgresql-42.2.9.jar
deploy PATH_TO_JDBC_DRIVER/postgresql-42.2.9.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将数据库配置为数据源。
语法
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>
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>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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=postgresCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Elytron 中创建一个
jdbc-realm。语法
/subsystem=elytron/jdbc-realm=<jdbc_realm_name>:add(principal-query=[<sql_query_to_load_users>])
/subsystem=elytron/jdbc-realm=<jdbc_realm_name>:add(principal-query=[<sql_query_to_load_users>])Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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"}/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"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意示例演示了如何从单个
principal-query中获取密码和角色。如果您需要多个查询来获取角色或额外的身份验证或授权信息,您还可以创建具有额外attribute-mapping属性的principal-query。有关支持的密码映器的列表,请参阅 密码映射器。
创建一个引用
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>"}])/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>"}])Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
/subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm}]) {"outcome" => "success"}/subsystem=elytron/security-domain=exampleSecurityDomain:add(default-realm=exampleSecurityRealm,permission-mapper=default-permission-mapper,realms=[{realm=exampleSecurityRealm}]) {"outcome" => "success"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
要验证 Elytron 是否可以从数据库加载数据,请使用以下命令:
语法
/subsystem=elytron/security-domain=<security_domain_name>:read-identity(name=<username>)
/subsystem=elytron/security-domain=<security_domain_name>:read-identity(name=<username>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出确认 Elytron 可以从数据库加载数据。
现在,您可以使用创建的安全域来向管理界面和应用程序添加身份验证和授权。如需更多信息,请参阅 保护管理界面和应用程序。