为什么80%的码农都做不了架构师?>>>   

只提供免证书的认证部分,操作部分可以百度。

认证部分,得到context即可对域进行各种操作;

  /*** 本文章是针对java JNDI方式操作ldap服务器。* 这里给出一个关键的片段,通过这段代码获取的Context是可以免证书的进行操作远程AD域的,我之前就是通过证书方式的,一大堆复杂的操作导出什么密钥库之类的。且证书1年就失效了还        要企业根证书才行,很多限制!后来花了很多心思才找到这个方法。* DummySSLSocketFactory 这个类我放外面好了方便猿友们导出,这段代码就是获取连接,我就没管那么多了直接贴了方法上来。* 获取AD上下文对象* @param res* @return*/public final static LDAPDirContext getContext(ResourceBean res){LDAPDirContext context = null;try {Properties mEnv = new Properties();mEnv.put(Context.AUTHORITATIVE, "true");mEnv.put(Context.SECURITY_PROTOCOL, "ssl");mEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");mEnv.put(Context.PROVIDER_URL, res.getExpand("url"));//mEnv.put(Context.SECURITY_AUTHENTICATION, "simple");mEnv.put(Context.SECURITY_PRINCIPAL, res.getUserName());// administrator@test.commEnv.put(Context.SECURITY_CREDENTIALS, res.getPassWord());//关键代码,注意对应的DummySSLSocketFactory这个类的包路径要正确,mEnv.put("java.naming.ldap.factory.socket", “org.utils.ad.DummySSLSocketFactory");context = new LDAPDirContext(mEnv);} catch (Exception e) {e.printStackTrace();context = null;System.out.println("AD域认证失败!");}return context;}

认证类,直接复制到工具类下即可,check**方法中没有任何操作,既信任任何证书:

package org.utils.ad;import java.security.cert.*;
import javax.net.ssl.*;
import java.security.cert.X509Certificate;
public class DummyTrustManager implements X509TrustManager {public void checkClientTrusted( X509Certificate[] cert, String authType) {return;}public void checkServerTrusted( X509Certificate[] cert, String authType) {return;}public X509Certificate[] getAcceptedIssuers() {return new X509Certificate[0];}
}
package org.utils.ad;
import java.security.cert.X509Certificate;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import javax.net.ssl.*;
import javax.net.SocketFactory;public class DummySSLSocketFactory extends SSLSocketFactory {private SSLSocketFactory factory;public DummySSLSocketFactory() {try {SSLContext sslcontext = SSLContext.getInstance("TLS");sslcontext.init( null, // No KeyManager requirednew TrustManager[] { new DummyTrustManager()},new java.security.SecureRandom());factory = ( SSLSocketFactory) sslcontext.getSocketFactory();} catch( Exception ex) { ex.printStackTrace(); }}public static SocketFactory getDefault() {return new DummySSLSocketFactory();}public Socket createSocket( Socket socket, String s, int i, boolean flag) throws IOException {return factory.createSocket( socket, s, i, flag);}public Socket createSocket( InetAddress inaddr, int i, InetAddress inaddr1, int j) throws IOException {return factory.createSocket( inaddr, i, inaddr1, j);}public Socket createSocket( InetAddress inaddr, int i) throws IOException {return factory.createSocket( inaddr, i);}public Socket createSocket( String s, int i, InetAddress inaddr, int j) throws IOException {return factory.createSocket( s, i, inaddr, j);}public Socket createSocket( String s, int i) throws IOException {return factory.createSocket( s, i);}public String[] getDefaultCipherSuites() {return factory.getSupportedCipherSuites();}public String[] getSupportedCipherSuites() {return factory.getSupportedCipherSuites();}}

测试可以正常使用windows的域操作。

转载于:https://my.oschina.net/qiaojj/blog/2251630

java操作ad域 免证书相关推荐

  1. java 操作AD域代码(跳过证书版)

    1.AD域操作类 @Slf4j public class ADOperator {private final DomainConfigModel adConfig;private static fin ...

  2. ad域控查看ldap端口命令_工作笔记(一)LDAP和AD介绍以及使用LDAP操作AD域

    1. LDAP入门 1.1 定义 LDAP是轻量目录访问协议(LightweightDirectory Access Protocol)的缩写,LDAP标准实际上是在X.500标准基础上产生的一个简化 ...

  3. java修改AD域用户密码使用SSL连接方式

    正常情况下,JAVA修改AD域用户属性,只能修改一些普通属性, 如果要修改AD域用户密码和userAccountControl属性就得使用SSL连接的方式修改, SSL连接的方式需要操作以下步骤: 1 ...

  4. AD 域服务简介(二)- Java 获取 AD 域用户

    博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 一.前言 先简单简单回顾上一篇 ...

  5. Java实现AD域登录认证

    最近公司派遣去乙方公司做项目开发,之前做好了的登录模块,按理来说是可以完全复用的,但是乙方客户提出要求,要用AD域登录认证的方式进行登录我们开发的Java Web系统,于是上网搜集了相关的资料,并运用 ...

  6. powershell自动化操作AD域、Exchange邮箱系列(1)——powershell 简介

    从今天开始,系统的整理一下使用powershell自动化管理AD域账号.exchange邮箱账号的流程,最终我们将实现一个通过Web端调用powershell脚本实现的域控 邮箱管理系统. 目录 一. ...

  7. 使用JAVA进行ad域身份验证常用属性详解

    一些变态的公司经常对开发者提出一些变态的问题.比如在oa系统中,要求登录验证必须使用ad域进行登录.还有的如登录crm系统必须使用公司的阿里云邮箱账号进行身份验证等等. 作为程序员我们只能按照客户的需 ...

  8. c# 操作ad域用户

    测试环境:win2008r2服务器 ad域服务器安装参考:https://www.cnblogs.com/cnjavahome/p/9029665.html 密码策略修改参考:https://blog ...

  9. java ad 证书_你好,请教一个java与AD域SSL(636端口)通讯问题

    展开全部 大体是这样的,目前手头没有32313133353236313431303231363533e78988e69d8331333332643966SSL的AD,没法帮助你测试public cla ...

最新文章

  1. 2015 年 Git@OSC 新增热门开源软件项目 Top 50
  2. 2021年春季学期-信号与系统-第十次作业参考答案-第六小题
  3. android class newinstance 构造函数 参数,android Fragment里的newInstance和构造函数
  4. 回到顶部和返回首页jquery插件
  5. navicat如何导入sql文件
  6. (33)VHDL实现异步复位D触发器
  7. cuSPARSE库:(一)函数的异步执行
  8. 详解animate.css动画插件用法
  9. 保存SVM模型并调用
  10. 朱建辉php,“神采·朱建辉版画艺术展”在尼泊尔加德满都开幕
  11. 书写软件之钢笔笔迹实现(一)
  12. Import Netscaler VPX10.5 to Hyper-V 2012R2
  13. 服务器更新宕机-自我检讨
  14. 阿里负责人揭秘面试潜规则
  15. 为何TCP/IP协议栈设计成沙漏型的
  16. linux如何打开服务setup,Linux的setup命令启动服务名称和功能
  17. [docker] 解决 docker 部署访问提示 Empty reply from server,但是本地运行能够正常访问
  18. python 算法教程 pdf 英文_上手实践《Python机器学习第2版》PDF中文+PDF英文+代码+Sebastian...
  19. 终于搞定android驱动USB摄像头了!
  20. python 3d引擎_3d引擎列表

热门文章

  1. react 不能往组件中传入属性的值为 undefined
  2. java Socket Tcp 浏览器和服务器(一)
  3. win32 去掉窗口边框
  4. 轻量级前端MVVM框架avalon - 模型转换
  5. 前谷歌工程团队负责人:如何打造一个完美的产品
  6. C#编程规范--控件命名篇[转]
  7. SAP中有关差异的一些概念
  8. Unity的对象复用
  9. 转 Java的各种打包方式(JAR/WAR/EAR/CAR)
  10. Canvas实用库Fabric.js使用手册