android sdk并没有提供ldap 的接口,看到网上有封装好的jar包。
ldap sdk下载地址:https://www.unboundid.com/products/ldap-sdk/files/unboundid-ldapsdk-2.3.4-se.zip
将unboundid-ldapsdk-se.jar引用到项目中。
MainAcitvity.java
package com.example.flashcall; import java.util.LinkedList; import android.app.Activity; import android.os.Bundle; import com.example.flashcall.SearchThread.OnSearchFinishedListener; import com.unboundid.ldap.sdk.Filter; import com.unboundid.ldap.sdk.LDAPException; import com.unboundid.ldap.sdk.SearchResult; import com.unboundid.ldap.sdk.SearchResultEntry; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Make sure that the filter is valid. String filterString = "(cn=test)"; Filter filter = null; try { filter = Filter.create(filterString); } catch (LDAPException le) { } // Create a thread to process the search. if (filter != null) { final SearchThread searchThread = new SearchThread(filter); searchThread.setResultListner(new OnSearchFinishedListener() { @Override public void onFinished(SearchResult result) { final int entryCount = result.getEntryCount(); if (entryCount == 0) { } else if (entryCount == 1) { SearchResultEntry ret = result.getSearchEntries() .get(0); ToolUtil.log(ret.toString()); } else { final LinkedList<SearchResultEntry> entries = new LinkedList<SearchResultEntry>( result.getSearchEntries()); } } }); searchThread.start(); } else { } } }
LdapServer.java
package com.example.flashcall; import com.unboundid.ldap.sdk.LDAPConnection; public class LdapServer { // The port number of the directory server. private static final int PORT = 389; // The base DN to use when searching the server. public static final String BASE_DN = "dc=example,dc=com"; // The address of the directory server. private static final String HOST = "127.0.0.1"; private static final String BIND_DN = "domain\\username"; private static final String BIND_PW = "123456"; private static LDAPConnection conn; public static LDAPConnection getConnection() { if (conn == null) { try { conn = new LDAPConnection(HOST, PORT, BIND_DN, BIND_PW); } catch (Exception e) { } } return conn; } }
SearchThread.java
package com.example.flashcall; import com.unboundid.ldap.sdk.Filter; import com.unboundid.ldap.sdk.LDAPConnection; import com.unboundid.ldap.sdk.LDAPException; import com.unboundid.ldap.sdk.LDAPSearchException; import com.unboundid.ldap.sdk.ResultCode; import com.unboundid.ldap.sdk.SearchRequest; import com.unboundid.ldap.sdk.SearchResult; import com.unboundid.ldap.sdk.SearchScope; final class SearchThread extends Thread { /** * The size limit that will be used for searches. */ static final int SIZE_LIMIT = 100; /** * The time limit (in seconds) that will be used for searches. */ static final int TIME_LIMIT_SECONDS = 30; // The filter to use for the search. private final Filter filter; public OnSearchFinishedListener l; public void setResultListner(OnSearchFinishedListener ml) { l = ml; }; SearchThread(final Filter filter) { ToolUtil.log(filter); this.filter = filter; } @Override() public void run() { SearchResult result = null; LDAPConnection conn = null; try { conn = LdapServer.getConnection(); final SearchRequest request = new SearchRequest(LdapServer.BASE_DN, SearchScope.SUB, filter); request.setSizeLimit(SIZE_LIMIT); request.setTimeLimitSeconds(TIME_LIMIT_SECONDS); result = conn.search(request); } catch (LDAPException lse) { } finally { if (conn != null) { conn.close(); } } if (result != null) { final ResultCode resultCode = result.getResultCode(); if (resultCode != ResultCode.SUCCESS) { } else { if (l != null) { l.onFinished(result); } } } } public interface OnSearchFinishedListener { public void onFinished(SearchResult ret); } }
注意事项:
1、若包引用无效,在“Order and Export”中将jar文件勾上,clean一下。
2、在manifest中添加<uses-permission android:name="android.permission.INTERNET" />权限。
参考文档:
https://www.unboundid.com/products/ldapsdk/
相关推荐
这个项目是基于Auth0平台构建的,Auth0是一个全面的身份验证服务,它允许开发者轻松地集成各种身份验证机制,包括社交身份提供商(如Google、Facebook等)和企业身份提供商(如Active Directory、LDAP、Google Apps...
在Android平台上构建基于Openfire服务器的XMPP即时聊天客户端是一个涉及多方面技术的项目。首先,让我们深入了解每个关键组件: 1. **XMPP (Extensible Messaging and Presence Protocol)** - XMPP是一种开放标准...
在您提供的压缩包中包含的全平台静态库意味着您将能够为 Android、iOS、Windows、Mac 和 Linux 平台的项目集成 `curl` 功能。 1. **curl 的主要功能**: - 支持多种网络协议:HTTP、HTTPS、FTP、FTPS、TFTP、SMTP...
vcard2ldap 该项目旨在将 vcard 导出 (vcf) 作为参数,并填充 LDAP 树。 要求 需要那些 python 包: ...一位法国博主,他提供了一段代码,我用作使用 python-ldap 库的灵感。 我暂时找不到链接,但非常感谢他。
LDAP (Lightweight Directory Access Protocol) 是一种用于存储和检索用户信息的标准协议,广泛应用于企业级的身份管理和目录服务中。VCard,另一方面,是一种通用的电子名片格式,允许用户在各种设备和应用程序...
Auth0 is an authentication broker that supports social identity providers as well as enterprise identity providers such as Active Directory, LDAP, Google Apps and Salesforce. Lock-Facebook helps you ...
ADSI使用LDAP与AD服务器进行通信,执行查询、添加、删除和修改操作。例如,查找特定用户可能涉及到构造一个适当的LDAP查询过滤器,然后使用ADSI接口发送该请求到AD服务器。 3. **用户遍历**:在AD中,遍历用户意味...
这种灵活性支持多平台(如Windows、Linux、iOS、Android、Win Phone)和多层次(业务层、系统层、硬件设备层)的集成,并提供了包括4A(认证、授权、审计、账户)、LDAP、SSO和CA在内的多种接口。 最后,平台强调对...
它具有性能强大、使用方便、稳定可靠、易于集成等优点,为各行业用户提供全高清视讯录播服务。 解决方案 华为视讯录播服务器RSE6500提供了一个完善的解决方案,满足各行业用户的需求。它支持单点、点到点和多点...
1. **构建和配置**:Android 项目中添加 curl 库需要将源码编译为适合 Android 平台的静态库或动态库,并且要确保与 Android NDK 和目标 API 级别兼容。 2. **权限管理**:使用网络功能时,需要在 AndroidManifest....
Wing FTP Server 是一款专业的跨平台 FTP 服务器端, 支持可伸缩的处理器架构并采用异步IO处理, 所以在速度和效率方面领先于其他同类产品。当然他还非常稳定可靠, 在高负载的情况下也能持续地正常运行, 非常适合企业...
通过LDAP、证书服务(如CEP/CAP证书)、电子邮件和应用安全服务,MobileIron构建了一个强大的移动安全网络,保护企业免受潜在威胁。 总结来说,企业移动互联平台解决方案是现代企业应对移动化趋势的关键工具,它...
Spring for Android则是Spring框架在Android平台上的扩展,方便与REST服务交互。 Spring Web Flow管理Web应用的页面流程,使页面跳转逻辑更加清晰。Spring LDAP简化了LDAP目录服务的访问。Spring Session提供了一种...
8. **跨平台支持**:Delphi XE2开始,DataSnap支持创建iOS和Android应用,使得开发者能够构建真正的多平台分布式系统。 书中《Chapter01》至《Chapter08》分别涵盖了DataSnap的基础概念、安装配置、服务器和客户端...
Openfire的核心功能包括用户认证、群聊、私聊、文件传输等,并且提供了与企业级应用集成的能力,例如与LDAP目录服务的整合。 【asmack】是一个专门为Android平台优化的XMPP客户端库,它是Smack库的分支。Smack是一...
Spring Web Flow关注Web应用的页面流程管理,Spring LDAP简化了对LDAP目录服务的访问。Spring Session提供了跨集群的会话管理,Spring Web Services专注于SOAP服务的开发。Spring Shell和Spring Roo则提供了命令行...
3. Web控制台(SaaS端):网络管理员在此平台上管理所有V**网关、网络连接及接入用户,提供自助服务和人工服务。 4. 接入用户端:用户通过Web控制台进行自助服务,如提交工单,获取技术支持。 该解决方案的一大亮点...
JNDI (Java Naming and Directory Interface) 是Java平台的标准API,用于访问命名服务。如果程序使用不受信任的数据作为JNDI查找的地址,可能会导致攻击者远程执行任意Java代码。 **3.3.2 危险代码示例** ```java ...
3. AppCan平台使用了MAS(Mobile Application Server 移动应用服务器)技术,可能为移动应用提供后端服务和解决方案。 ### 关键技术点: 1. **AppCan SDK**:软件开发工具包,包含了开发AppCan应用所需的库、API等...