搜索

2.3. 使用基于数据库的身份存储配置身份验证

download PDF
  1. 确定用户名、密码和角色的数据库格式:

    要使用身份存储的数据库来设置身份验证,您需要确定用户名、密码和角色如何存储在该数据库中。在本例中,我们使用带有以下示例数据的单个表:

    usernamepassword角色

    user1

    password123

    Admin

    user2

    password123

    guest

  2. 配置数据源:

    若要从 JBoss EAP 连接数据库,您必须已部署适当的数据库驱动程序,并且配置了数据源。本例演示了为 PostgreSQL 部署驱动程序并在 JBoss EAP 中配置数据源:

    deploy /path/to/postgresql-9.4.1210.jar
    
    data-source add --name=examplePostgresDS --jndi-name=java:jboss/examplePostgresDS --driver-name=postgresql-9.4.1210.jar  --connection-url=jdbc:postgresql://localhost:5432/postgresdb --user-name=postgresAdmin --password=mysecretpassword
  3. 在 JBoss EAP 中配置 a jdbc-realm:

    /subsystem=elytron/jdbc-realm=exampleDbRealm:add(principal-query=[{sql="SELECT password,roles FROM eap_users WHERE username=?",data-source=examplePostgresDS,clear-password-mapper={password-index=1},attribute-mapping=[{index=2,to=groups}]}])
    注意

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

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

  4. 配置 security-domain

    /subsystem=elytron/security-domain=exampleDbSD:add(realms=[{realm=exampleDbRealm,role-decoder=groups-to-roles}],default-realm=exampleDbRealm,permission-mapper=default-permission-mapper)
  5. undertow 子系统中配置 application-security-domain

    /subsystem=undertow/application-security-domain=exampleApplicationDomain:add(security-domain=exampleDbSD)
    注意

    可以通过导航到 Configuration Subsystems Web(Under tow )→ Application Security Domain,使用管理控制台配置 undertow 子系统中的 application-security-domain

  6. 配置应用程序的 web.xmljboss-web.xml

    您的 web.xmljboss-web.xml 必须更新为使用您在 JBoss EAP 中配置的 application-security-domain。例如,将 Web 应用程序配置为使用 Elytron 或传统安全性进行身份验证

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.