java获取windows Active Directory信息
来源:互联网 发布:mac安装不了flash 编辑:程序博客网 时间:2024/09/21 06:33
通过java原生态的api就可以获取到windows AD信息,想要了解windows Active Directory是个什么东东,自己可以查阅相关资料,一般来说windows系统安装完后可能不会自带AD查看器,我们需要通过下载软件进行update,下载地址:https://www.technipages.com/windows-install-active-directory-users-and-computers,安装完AD我们可以通过AD查看器查看到如下信息,我们还可以通过一些工具比如LDAPSoft Ldap Browse查看AD信息:
上图就是我的windows电脑所显示的AD信息,我的是win10系统,上面显示的属性中我们可以通过java api获取到
得到LdapContext信息,要获取到LdapContext信息,我们需要提供开通389端口的ldap协议的电脑ip、domain、用户名及密码信息,否则获取会报错:
public class LdapContextFactory {private static LdapContext ldapContext;public static LdapContext getLdapContext(String url, String domain, String username, String password) {if (ldapContext == null) {try {Hashtable<String, String> environment = getActiveDirectoryEnvironment(url, domain, username, password);ldapContext = new InitialLdapContext(environment, null);} catch (NamingException e) {e.printStackTrace();}}return ldapContext;}private static Hashtable<String, String> getActiveDirectoryEnvironment(String url, String domain, String username,String password) {Hashtable<String, String> environment = new Hashtable<>();environment.put("java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory");environment.put("java.naming.security.authentication", "simple");environment.put("java.naming.provider.url", url);environment.put("java.naming.security.principal", username + "@" + domain);environment.put("java.naming.security.credentials", password);return environment;}}
获取所有属性信息
public static void getAllAttribute(LdapContext ldapContext){try {System.out.println("validate success :" + ldapContext);Name name = new LdapName("dc=centmfademo,dc=com");Attributes allAttrs = ldapContext.getAttributes(name);if (null == allAttrs) {System.out.println("no attributes");return;}for (NamingEnumeration<?> attrs = allAttrs.getAll(); attrs.hasMore();) {Attribute attr = (Attribute) attrs.next();System.out.println("attr : " + attr.getID());for (NamingEnumeration<?> values = attr.getAll(); values.hasMore();) {System.out.println("\tvalue : " + values.next());}}System.out.println("-------------------------------------------");} catch (AuthenticationException e) {e.printStackTrace();} catch (NamingException e) {e.printStackTrace();System.out.println("validate faliure :" + e);} finally {try {ldapContext.close();} catch (NamingException e) {e.printStackTrace();}}}获取定制属性信息:
public static void getSpecialAttribute(LdapContext ldapContext){try{SearchControls searchControls = new SearchControls();searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);String returnedAtts[] = {"memberOf","dSCorePropagationData"};//定制返回属性/*String returnedAtts[] = { "url", "whenChanged", "employeeID", "name", "userPrincipalName","physicalDeliveryOfficeName", "departmentNumber", "telephoneNumber", "homePhone", "mobile","department", "sAMAccountName", "whenChanged", "mail" }; // 定制返回属性*/searchControls.setReturningAttributes(returnedAtts); // 设置返回属性集String searchBase = "DC=centmfademo,DC=com"; //Specify the Base for the search//搜索域节点 //(&(objectClass=user))//(&(objectClass=user)(sAMAccountName=dev001))//(&(objectClass=user)(sAMAccountName=dev001)(givenName=dev))String searchFilter = "objectClass=User"; //specify the LDAP search filter //String searchFilter = "objectClass=organizationalUnit";//specify the LDAP search filter NamingEnumeration<SearchResult> searchResults = ldapContext.search(searchBase, searchFilter,searchControls);while(searchResults.hasMoreElements()){SearchResult searchResult = searchResults.next();System.out.println(searchResult.getName());Attributes allAttrs = searchResult.getAttributes();//System.out.println(allAttrs.get("mail"));if (null == allAttrs) {System.out.println("no attributes");return;}for (NamingEnumeration<?> attrs = allAttrs.getAll(); attrs.hasMore();) {Attribute attr = (Attribute) attrs.next();System.out.println("attr : " + attr.getID());//System.out.println("attr get : " + attr.get().toString());for (NamingEnumeration<?> values = attr.getAll(); values.hasMore();) {System.out.println("\tvalue : " + values.next());}/*Enumeration<?> values = attr.getAll();if(values != null){while(values.hasMoreElements()){System.out.println(" AttributeValues=" + values.nextElement()); }}*/}}} catch (AuthenticationException e) {e.printStackTrace();} catch (NamingException e) {e.printStackTrace();System.out.println("validate faliure :" + e);} finally {try {ldapContext.close();} catch (NamingException e) {e.printStackTrace();}}}编写我们的测试类进行测试
public static void main(String[] args) {String url = "ldap://127.0.0.1:389";// 19.201.String domain = "testademo.com";String username = "administrator"; // 用户名称String password = "testhello"; // 密码LdapContext ldapContext = LdapContextFactory.getLdapContext(url, domain, username, password);getAllAttribute(ldapContext);getSpecialAttribute(ldapContext);}
阅读全文
0 0
- java获取windows Active Directory信息
- Java访问windows活动目录+Active+Directory
- 创建 Active Directory - Windows 2003
- Windows server 2008 -- Active Directory
- Windows域 Active Directory介绍
- 安装Windows Active Directory注意事项
- java ldap 访问 Active Directory
- Active Directory的java访问
- JAVA登陆Window Server Active Directory并搜索用户信息以及组信息(一)
- 从Active Directory中获取用户信息
- 获取Active Directory里user的明细
- Active Directory b2c通过策略获取用户信息
- windows 2000 Active Directory部署体会
- 创建Windows 2000 Active Directory Server
- Windows 2000 Active Directory FSMO角色
- JNDI 连接Windows Active Directory 教程
- JNDI 连接Windows Active Directory 教程
- JNDI 连接Windows Active Directory 教程
- C语言实验--计算表达式
- 【1701H1】【穆晨】【171023】连续第十三天总结
- mysql处理高并发,防止库存超卖
- Spring MVC框架搭建
- ofbiz总结——Lookup使用的字段包含中文是显示乱码。
- java获取windows Active Directory信息
- 剑指offer
- LeetCode_8_String to Integer (atoi)
- 清除浮动优缺点
- Python(十一)枚举类
- json错误解析net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
- openssl升级后 libssl.so.10缺失及版本问题
- 欢迎使用CSDN-markdown编辑器
- 2017第三届中国西部农资展览会会刊(参展商名录)