首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在LDAP Java中返回所有用户的特定属性?

在LDAP Java中返回所有用户的特定属性,可以通过以下步骤实现:

  1. 首先,需要建立与LDAP服务器的连接。可以使用Java的javax.naming.directory包中的InitialDirContext类来创建一个LDAP上下文连接。需要提供LDAP服务器的URL、用户名和密码等连接参数。
  2. 接下来,可以使用LDAP查询语言(LDAP Query Language,简称LDAPQL)来编写查询语句,以获取特定属性的所有用户。LDAPQL是一种类似SQL的语言,用于在LDAP目录中进行搜索和过滤。
  3. 在查询语句中,可以使用SearchControls类来指定要返回的属性。可以通过setReturningAttributes方法设置要返回的属性名称数组,或者使用setReturningObjFlag方法设置为true,以返回所有属性。
  4. 使用查询语句和属性设置,可以调用LDAP上下文的search方法来执行搜索操作。该方法返回一个NamingEnumeration对象,其中包含了符合查询条件的所有用户的结果集。
  5. 遍历结果集,可以使用next方法逐个获取用户对象。然后,可以使用getAttributes方法获取用户的属性集合。
  6. 对于每个用户对象,可以使用get方法获取特定属性的值。可以根据属性名称使用get方法,也可以使用getAll方法获取多值属性的所有值。

以下是一个示例代码,演示如何在LDAP Java中返回所有用户的特定属性(以"cn"属性为例):

代码语言:txt
复制
import javax.naming.*;
import javax.naming.directory.*;

public class LDAPExample {
    public static void main(String[] args) {
        // LDAP服务器连接参数
        String ldapUrl = "ldap://ldap.example.com:389";
        String username = "cn=admin,dc=example,dc=com";
        String password = "adminpassword";

        // LDAP查询语句和属性设置
        String baseDn = "dc=example,dc=com";
        String filter = "(objectClass=person)";
        String[] returningAttributes = { "cn" };

        try {
            // 建立与LDAP服务器的连接
            Hashtable<String, String> env = new Hashtable<>();
            env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
            env.put(Context.PROVIDER_URL, ldapUrl);
            env.put(Context.SECURITY_AUTHENTICATION, "simple");
            env.put(Context.SECURITY_PRINCIPAL, username);
            env.put(Context.SECURITY_CREDENTIALS, password);
            DirContext ctx = new InitialDirContext(env);

            // 执行LDAP查询
            SearchControls searchControls = new SearchControls();
            searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
            searchControls.setReturningAttributes(returningAttributes);
            NamingEnumeration<SearchResult> results = ctx.search(baseDn, filter, searchControls);

            // 遍历结果集
            while (results.hasMore()) {
                SearchResult result = results.next();
                Attributes attributes = result.getAttributes();
                Attribute cnAttribute = attributes.get("cn");

                // 获取特定属性的值
                if (cnAttribute != null) {
                    for (int i = 0; i < cnAttribute.size(); i++) {
                        String cnValue = (String) cnAttribute.get(i);
                        System.out.println("cn: " + cnValue);
                    }
                }
            }

            // 关闭LDAP连接
            ctx.close();
        } catch (NamingException e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们使用了Java的javax.naming.directory包中的类来实现LDAP查询和属性获取。请注意,示例中的连接参数、LDAP服务器URL、用户名和密码等需要根据实际情况进行修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SpringBoot返回枚举对象所有属性以对象形式返回(一个@JSONType解决)

一、前言 最近小编在开发遇到个问题,就是关于枚举方面的使用。一些固定不变数据我们可以通过枚举来定义,减少对数据库查询。是一种常见开发技巧!...常见场景需求是:通过某一个属性获取对应枚举属性另一个值;还有就是常量枚举,比如一下统一返回状态和编码! ==小编需求是把枚举所有属性都取出来,转成实体类那种返回给前端!...== 最简单解决就是拿到所有的然后便利加到新集合里,这样还需要定义一个实体类来接收转一下!...这样有点麻烦,小编也是无意发现了,项目中有以前大佬留下来一个注解@JSONType(serializeEnumAsJavaBean = true),一加上只需要我们使用枚举.values()即可直接帮助我们返回

3.4K10

何在 WPF 获取所有已经显式赋过值依赖项属性

获取 WPF 依赖项属性值时,会依照优先级去各个级别获取。这样,无论你什么时候去获取依赖项属性,都至少是有一个有效值。有什么方法可以获取哪些属性被显式赋值过呢?...如果是 CLR 属性,我们可以自己写判断条件,然而依赖项属性没有自己写判断条件地方。 本文介绍如何获取以及显式赋值过依赖项属性。...---- 需要用到 DependencyObject.GetLocalValueEnumerator() 方法来获得一个可以遍历所有依赖项属性本地值。...因此,你不能在这里获取到常规方法获取到依赖项属性真实类型值。 但是,此枚举拿到所有依赖项属性值都是此依赖对象已经赋值过依赖项属性本地值。如果没有赋值过,将不会在这里遍历中出现。...,同时有更好阅读体验。

16140

java8 利用reduce实现将列表多个元素属性求和并返回

利用java8流特性,我们可以实现list多个元素 属性求和 并返回。...案例: 有一个借款待还信息列表,其中每一个借款合同包括:本金、手续费; 现在欲将 所有的本金求和、所有的手续费求和。...我们可以使用java8函数式编程,获取list流,再利用reduce遍历递减方式将同属性(本金、手续费)求和赋予给一个新list同类型对象实例,即得到我们需要结果: A a = list.stream...y.getFee()) ) ) .orElse( new A(0, 0) ); 示例代码如下: package org.byron4j.eight; import java.util.ArrayList...; import java.util.List; import org.junit.Test; public class ReduceTwoObjectAddProp { class A

1.3K30

使用符合LDAP身份服务配置身份认证

何在Cloudera Manager中使用LDAP配置身份认证。...,以使Cloudera Manager能够在目录查找用户帐户和组: • 使用单个专有名称(DN)作为基础,并提供一种模式(专有名称模式)以匹配目录用户名,或者 • 搜索过滤器选项使您可以根据更广泛搜索条件来搜索特定用户...6) 在LDAP URL属性,提供LDAP服务器URL和(可选)作为URL一部分基础专有名称(DN)(搜索基础)(例如) ldap://ldap-server.corp.com/dc=corp,...对于需要用户过滤器,可以使用 {1},即 memberUid={1},这将返回用户所属组列表,该列表将与讨论属性列表进行比较。...Cloudera Manager将登录时提供名称替换为该模式,并搜索该特定用户

2.3K30

何在保留原本所有样式绑定和用户设置值情况下,设置和还原 WPF 依赖项属性

WPF 备份某控件一些属性,做一些神奇操作,然后再还原这些属性。多么司空见惯操作呀!然而怎么备份却是值得研究问题。直接赋值?那一定是因为你没踩到一些坑。...场景和问题 现在,我们假想一个场景(为了编代码方便): 有一个窗口,设置了一些样式属性 现在需要将这个窗口设置为全屏,这要求修改一些原来属性(WPF 自带那设置有 bug,我会另写一篇博客说明) 取消设置窗口全屏后...而我们通过在 XAML 或 C# 代码中直接赋值,设置是“本地值”。因此,如果设置了本地值,那么更低优先级样式当然就全部失效了。 那么绑定呢?绑定在依赖项属性优先级并不存在。...绑定实际上是通过“本地值”来实现,将一个绑定表达式设置到“本地值”,然后在需要值时候,会 ProvideValue 提供值。所以,如果再设置了本地值,那么绑定设置就被覆盖掉了。...但是,SetCurrentValue 就是干这件事! SetCurrentValue 设计为在不改变依赖项属性任何已有值情况下,设置属性当前值。

15420

工作流Activiti框架LDAP组件使用详解!实现对工作流目录信息分布式访问及访问控制

: 使用Activiti Explorer 通过LDAP登录 获得用户组: 在查询用户可以看到哪些任务时非常重要,比如任务分配给一个候选组 配置 集成LDAP是通过向流程引擎配置configurators...属性值 String simple customConnectionParameters 可以设置那些没有对应setter连接参数,这些属性用来配置连接池,特定安全设置等等.所有提供参数都会用来创建...类匹配uid属性值都会返回.如果只设置一个查询无法满足特定LDAP设置,可以选择使用LDAPQueryBuilder, 这样就会提供比单纯使用查询增加更多功能 String queryUserByFullNameLike...uniqueMember记录都会返回.{0}会替换为用户Id.如果只设置一个查询无法满足特定LDAP设置,可以选择使用LDAPQueryBuilder, 这样就会提供比单纯使用查询增加更多功能 String...设置组缓存过期时间,单位为毫秒.当获取特定用户组时,并且组缓存也启用,组会保存到缓存,并使用这个属性设置时间:当组在00:00被获取,过期时间为30分钟,那么所有在00:30之后进行查询都不会使用缓存

1.1K20

ldapsearch命令详解_ldapsearch命令详解

*” “cn=J*Brown” >= 查找特定项,该项包含属性数字或字母值大于或等于指定值。...“cn>=D” <= 查找特定项,该项包含属性数字或字母值小于或等于指定值。 “roomNumber<=300” =* 查找包含特定属性项,而不用管属性值是什么。...搜索过滤器语法为: " " 例如,下面的搜索过滤器可以找到所有特定项,只要该项以 Smith 作为 sn(别称)属性值:...如果使用文件,请在单独行中指定每个搜索过滤器。 请注意:如果 LDAP 目录( Domino LDAP 目录)支持语言标记,则可在搜索过滤器包含它们。...上所有项,捆绑为:用户“cn=John Doe,o=Acme”,口令“password”,并以 LDIF 格式返回所有属性和值 ldapsearch -h ldap.acme.com -D “cn

4.8K20

ldap 统一认证 java_如何在系统里集成LDAP统一认证「建议收藏」

三、LDAP基本模型 3.1 信息模型 LDAP中信息以树状方式组织,数据基本单元是条目,每个条目由属性构成,属性存储有属性值。...3.2 命名模型 LDAP命名模型,也即LDAP条目的定位方式。 每个条目有自己DN,DN是该条目在整个树唯一名称标识,如同文件系统带路径文件名。...如果返回多个或没有返回,说明用户输入用户名有误,验证失败。 4、如果上一步验证成功,得到用户信息所在entryDN,使用这个DN和用户输入password重新绑定LDAP服务器。...主要是出于安全考虑,LDAP服务器对于password属性一般是不可读。 4.4 LDAP搜索参数表达式 & 与(列表中所有项必须为true) | 或(列表至少一个必须为true) !...但值不做限制) * 通配符(表示这个位置可以有一个或多个字符),当指定属性值时用到 \ 转义符(当遇到“*”,“(”,“)”时进行转义) 五、如何在系统中集成LDAP认证 LDAP认证服务是跨平台,同时支持

3.4K20

LDAP基础安装与简单入门使用.md

) UID User Id 用户ID username(一条记录ID) SN Surname 姓,“文” RDN Relative dn 相对辨别名,类似于文件系统相对路径,它是与目录树结构无关部分...信息以树状方式组织,在树状信息基本数据单元是条目,而且每个条目由属性构成,属性存储由属性值; 条目 属性 ------------- -------------- | 条目...LDAP进行认证,在统一身份认证之后,用户所有信息都存储在AD Server。...这也称为等价搜索:cn=WeiyiGeek 下列过滤器返回所有不包含通用名 WeiyiGeek 条目:(!...(cn=WeiyiGeek)) 下列过滤器返回所有条目中都有包含子字符串 X.500 说明属性:description=X.500 下列过滤器返回所有组织单元为 Marketing 且说明字段不包含子字符串

3.2K20

LDAP协议介绍

这里要着重指出是,在LDAPEntry是不能像关系数据库表那样随意添加属性字段,一个Entry属性是由它所继承所有Object Classes属性集合决定,此外可以包括LDAP规定...(cn=Ray Kultgen)) 下列过滤器返回所有条目中都有包含子字符串 X.500 说明属性:description=*X.500* 下列过滤器返回所有组织单元为 Marketing 且说明字段不包含子字符串...-z 返回结果最大数量 搜索“操作属性” 在LDAP搜索,操作属性在默认情况下是不会跟随搜索结果返回。...搜索“操作对象类”条目 在LDAPRole、CoS等对象被定义为特殊Object Class——操作对象类(operational object class),在一般搜索,这类对象是不会作为结果返回用户...ACI样例 1.用户 bjensen 具有修改其自己目录条目中所有属性权限。

2.8K10

JNDI注入工具代码结构分析

: controllers模块:负责LDAP请求处理 enum模块:负责存储各种模板类型名称,:反序列化Gadget、内存马类型 异常模块:负责处理可能抛出异常 反序列化模块:各种反序列化链处理...HTTPServer则是正常Java Demo编写即可 THE SPRING EQUINOX 注解应用 在JNDIEXP,作者为了可以反射一种类型类,Controller类,这里类起到了寻找特定作用...com.feihong.ldap包下面所有LdapMapping类,之后将其以键值对(TreeMap)放入到Map,以便于后续调用 比如com.feihong.ldap.controllers.BasicController...javaCodebase:实例化工厂所需类定义位置(HTTP地址) javaFactory:用于存储对象工厂完全限定类可选属性(即类名) 一张图说明LDAP请求过程 接下来看HTTPServer...如何接收HTTP请求并返回 当HTTPServer接收到请求之后,将Cache类map存储类写入到响应,这样避免了class文件落地情况。

1.1K30

保护 IBM Cognos 10 BI 环境

IBM Cognos 10 BI 其实就是一个 Java Web 应用程序,它部署在 Java 应用服务器, IBM WebSphere 之上。...每个身份验证提供程序均附属于某一特定类型身份验证源, LDAP、Microsoft Active Directory 或 SAP BW,并使用它来实现读取安全对象和处理身份验证过程逻辑。...值得注意是所使用属性必须是可用于所有对象,组、文件夹和用户。如果选中属性只对用户有效,那么当管理名称空间时,一些对象就不会出现在 IBM Cognos Connection 。...这对于客户端不返回共同 CA 服务或安全需求允许使用应用程序特定 CA 安装来说,非常灵活。...这会前进至一个页面,该页面可以通过单击右上方Refresh来刷新,直到状态变成成功或失败。所有关于特定用户信息将会显示在该页面的列表

2.5K90

搭建LDAP服务器详细流程

目录服务是一种特殊数据库系统,其专门针对读取,浏览和搜索操作进行了特定优化。目录一般用来包含描述性,基于属性信息并支持精细复杂过滤能力。...为了访问存储在目录信息,就需要使用运行在TCP/IP 之上访问协议—LDAP。...引言 本文介绍如何在搭建ldap服务器,我以在云服务器 ESC (Elastic Compute Service)上搭建为例,ESC系统为 centos7.9。.../etc/ldapscripts/ldapscripts.passwd" 管理group,user 这一节可以忽略,这是介绍如何在终端配置ldap用户和组,后面可以在web创建。...c. 519行,设置用户属性唯一性,这里我将cn,sn加上了,以确保用户唯一性 $servers->setValue('unique','attrs',array('mail','uid','uidNumber

3K10

Java RMI、JNDI、LADP、JRMP、JMX、JMS那些事儿(上)

Stub包含了远程对象定位信息,Socket端口、服务端主机地址等等,并实现了远程调用过程具体底层网络通信细节,所以RMI远程调用逻辑是这样: ?...远程代码库和安全管理器 在JNDI栈,不是所有的组件都被同等对待。当验证从何处加载远程类时JVM行为不同。...,域名为example.com变成dc=example,dc=com(一条记录所属位置) uid User Id 用户ID songtao.xu(一条记录ID) ou Organization Unit...(唯一) rdn Relative dn 相对辨别名,类似于文件系统相对路径,它是与目录树结构无关部分,“uid=tom”或“cn= Thomas Johansson” LDAP 目录信息是以树形结构进行存储...某些ACL允许用户修改其任何除黑名单外属性•中间人攻击:尽管当今大多数LDAP服务器使用TLS进行加密他们通信后,但在网络上攻击者仍然可能能够进行攻击并修改那些未加密证书,或使用受感染证书来修改属性

3.8K11

CA3005:查看 LDAP 注入漏洞代码

默认情况下,此规则会分析整个代码库,但这是可配置。 规则说明 使用不受信任输入时,请注意防范轻型目录访问协议 (LDAP) 注入攻击。 攻击者可能会对信息目录运行恶意 LDAP 语句。...使用用户输入构造动态 LDAP 语句来访问目录服务应用程序尤其容易受到攻击。 此规则试图查找 HTTP 请求要访问 LDAP 语句输入。 备注 此规则无法跨程序集跟踪数据。...若要了解如何在 EditorConfig 文件配置此限制,请参阅分析器配置。 如何解决冲突 对于用户控制 LDAP 语句部分,请考虑: 仅允许使用包含非特殊字符安全列表。...配置代码以进行分析 使用下面的选项来配置代码库哪些部分要运行此规则。 排除特定符号 排除特定类型及其派生类型 你可以仅为此规则、为所有规则或为此类别(安全性)所有规则配置这些选项。...排除特定符号 可以从分析中排除特定符号,类型和方法。

73300

11.如何为CDSW集成RedHat7OpenLDAP认证

1.文档编写目的 ---- 在前面的文章Fayson介绍了CDH各个组件与OpenLDAP集成,具体可以看Fayson更新《从入门到精通 - Fayson带你玩转CDH》文章里面包含了公众号内所有的文章...CDH5.14安装CDSW1.3》和《如何在CDH5.15安装CDSW1.4》,这里就不再重复讲Navigator安装了。...搜索LDAP用户结果过滤条件 LDAP User Username Attribute uid OpenLDAP用户属性LDAP Group Search Base ou=Group,dc=fayson...LDAP User Groups 允许访问CDSW服务组,空为所有用户都可以访问 LDAP Full Administrator Groups cdsw_admin 为指定用户组赋予超级管理员权限...在CDSW如果需要限制用户组访问或为用户组赋予超级管理员权限,均是通过登录成功用户DN(uid=cdsw_a,ou=People,dc=fayson,dc=com)查找到用户所属组与设置访问列表及权限列表组进行对比

99130

使用 AD 诱饵检测 LDAP 枚举和Bloodhound Sharphound 收集器

何在 Active Directory 环境检测 Bloodhound SharpHound 收集器和 LDAP 侦察活动完成枚举。...LDAP 查询并使用 ADFind 之类工具,它还会返回请求数据: image.png 在结果,我们可以看到已经枚举了 222 个对象(与 Sharphound 相同),并且输出包含所有详细信息...为此,请执行以下步骤: 右键单击用户对象-属性-转到安全>高级>审核并添加新审核条目 添加一个新校长“每个人” 从“适用于”下拉菜单,选择“仅此对象” 取消选中所有主要权限。...为此,以下是 AD 用户和计算机 MMC 步骤: 右击计算机对象——属性——进入安全>高级>审计并添加一个新审计条目 添加一个新校长“每个人” 从“适用于”下拉菜单,选择“仅此对象” 取消选中所有主要权限...我们还将在对象公共属性添加详细信息,如下所示: 在描述添加详细信息,诱饵用户对象组织属性 在计算机帐户操作系统名称、版本和 DNS 名称属性添加详细信息 如果是群组,请确保添加群组信息、添加成员并使其看起来合法

2.5K20
领券