2.4. 使用基于 LDAP 的身份存储配置身份验证

  1. 确定用户名、密码和角色的 LDAP 格式:

    要使用 LDAP 服务器设置身份存储身份验证,您需要确定用户名、密码和角色的存储方式。在本例中,我们使用以下结构:

    dn: dc=wildfly,dc=org
    dc: wildfly
    objectClass: top
    objectClass: domain
    
    dn: ou=Users,dc=wildfly,dc=org
    objectClass: organizationalUnit
    objectClass: top
    ou: Users
    
    dn: uid=jsmith,ou=Users,dc=wildfly,dc=org
    objectClass: top
    objectClass: person
    objectClass: inetOrgPerson
    cn: John Smith
    sn: smith
    uid: jsmith
    userPassword: password123
    
    dn: ou=Roles,dc=wildfly,dc=org
    objectclass: top
    objectclass: organizationalUnit
    ou: Roles
    
    dn: cn=Admin,ou=Roles,dc=wildfly,dc=org
    objectClass: top
    objectClass: groupOfNames
    cn: Admin
    member: uid=jsmith,ou=Users,dc=wildfly,dc=org
  2. 配置 a dir-context:

    若要从 JBoss EAP 连接到 LDAP 服务器,您需要配置一个 dir-context,它提供 URL 以及用于连接服务器的主体。

    /subsystem=elytron/dir-context=exampleDC:add(url="ldap://127.0.0.1:10389",principal="uid=admin,ou=system",credential-reference={clear-text="secret"})
  3. 在 JBoss EAP 中配置 ldap-realm:

    /subsystem=elytron/ldap-realm=exampleLR:add(dir-context=exampleDC,identity-mapping={search-base-dn="ou=Users,dc=wildfly,dc=org",rdn-identifier="uid",user-password-mapper={from="userPassword"},attribute-mapping=[{filter-base-dn="ou=Roles,dc=wildfly,dc=org",filter="(&(objectClass=groupOfNames)(member={0}))",from="cn",to="Roles"}]})
    警告

    如果引用的 LDAP 服务器包含循环引用,则可能会导致 JBoss EAP 服务器上的 java.lang.OutOfMemoryError 错误。

  4. 添加 simple-role-decoder

    /subsystem=elytron/simple-role-decoder=from-roles-attribute:add(attribute=Roles)
  5. 配置 security-domain

    /subsystem=elytron/security-domain=exampleLdapSD:add(realms=[{realm=exampleLR,role-decoder=from-roles-attribute}],default-realm=exampleLR,permission-mapper=default-permission-mapper)
  6. undertow 子系统中配置 application-security-domain

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

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

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

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

重要

如果 elytron 子系统使用 LDAP 服务器来执行身份验证,JBoss EAP 将返回 500 或内部服务器错误 如果该 LDAP 服务器无法访问,则返回错误代码。此行为与使用传统 security 子系统的旧版 JBoss EAP 不同,后者在相同的条件下返回 401 或未授权的错误代码。