jakarta-ee - 如何在wildfly web app中实现LDAP登录

标签 jakarta-ee authentication ldap wildfly

如何在 Java EE WildFly 应用程序中实现 LDAP 身份验证?有没有例子?

我是 Java EE 的新手,需要使用 LDAP 编写一个应用程序,但我被卡住了。我读了一本关于在 WildFly 中进行开发的书,但那里没有关于 LDAP 的信息。

最佳答案

必须执行以下操作步骤才能使用 LDAP 验证您的应用程序(假设已设置 LDAP)。

standalone.xml 中创建新的安全域文件。

<security-domain name="LDAPAuth">
  <authentication>
    <login-module code="LdapExtended" flag="required">
      <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
      <module-option name="java.naming.provider.url" value="ldap://localhost:389"/>
      <module-option name="java.naming.security.authentication" value="simple"/>
      <module-option name="bindDN" value="uid=admin,dc=acme,dc=com"/>
      <module-option name="bindCredential" value="secret"/>
      <module-option name="baseCtxDN" value="ou=People,dc=acme,dc=com"/>
      <module-option name="baseFilter" value="(uid={0})"/>
      <module-option name="rolesCtxDN" value="ou=Roles,dc=acme,dc=com"/>
      <module-option name="roleFilter" value="(member={1})"/>
      <module-option name="roleAttributeID" value="cn"/>
      <module-option name="searchScope" value="ONELEVEL_SCOPE"/>
      <module-option name="allowEmptyPasswords" value="true"/>
    </login-module>
  </authentication> 
</security-domain>

您将不得不相应地更改值

现在,您必须在应用程序的 web.xml 中添加安全上下文。假设您只需要 user 的用户登录到您的应用程序的角色,然后您可以添加这样的内容

    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

        <security-constraint>
            <web-resource-collection>
                <web-resource-name>HtmlAuth</web-resource-name>
                <description>application security constraints</description>
                <url-pattern>/*</url-pattern>
                <http-method>GET</http-method>
                <http-method>POST</http-method>
            </web-resource-collection>
            <auth-constraint>
                <role-name>Manager</role-name>
            </auth-constraint>
        </security-constraint>
        <login-config>
            <auth-method>BASIC</auth-method>
            <realm-name>LDAPAuth realm</realm-name>
        </login-config>
        <security-role>
            <role-name>user</role-name>
        </security-role>
    </web-app>

你必须放置一个 jboss-web.xml在您的 WEB-INF 文件夹中包含以下内容

    <jboss-web>
           <security-domain>java:/jaas/LDAPAuth</security-domain>
    </jboss-web>

你可以找到关于这个主题的精彩教程 here

关于jakarta-ee - 如何在wildfly web app中实现LDAP登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30186681/

相关文章:

php - 如何构建 cms 的用户权限

android - openfire可以和mysql服务器合并吗

java - 了解 Java Web 开发并分离逻辑层

java - 服务器对浏览器的响应 : calling the doGet Method Java

java - 如何在 wildfly-8.2.0.Final 的自定义文件夹位置生成 server.log

java - 从数据库调用类(编译后的java文件)文件并在应用程序服务器上运行时执行它

sockets - SMTP 套接字 -- Authentocation & SSLSocket

mysql - 如何登录mysql并从linux终端查询数据库

node.js - 制造商 ldapjs 使用 tls

active-directory - 使用 Ansible 从 LDAP 获取电子邮件