使用java连接AD域,验证账号密码是否正确
- eb项目中有时候客户要求我们使用ad域进行身份确认,不再另外做一套用户管理系统。其实客户就是只要一套账号可以访问所有的OA,CRM等办公系统。
这就是第三方验证。一般有AD域,Ldap,Radius,邮件服务器等。最常用的要数AD域了。因为window系统在国内占据了大量的江山。做起来也很方便。
我这篇文章就是写,如何用java去实现AD域的身份验证。好了,直接看代码吧:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667packagecom.test;importjava.util.Hashtable;importjavax.naming.AuthenticationException;importjavax.naming.Context;importjavax.naming.directory.DirContext;importjavax.naming.directory.InitialDirContext;/*** 使用java连接AD域,验证账号密码是否正确* @author Herman.Xiong* @date 2014-12-23 下午02:07:26* @version V3.0* @since jdk 1.6,tomcat 6.0*/publicclassAdTest {/*** 使用java连接AD域* @author Herman.Xiong* @date 2014-12-23 下午02:24:04* @return void* @throws 异常说明* @param host 连接AD域服务器的ip* @param post AD域服务器的端口* @param username 用户名* @param password 密码*/publicstaticvoidconnect(String host,String post,String username,String password) {DirContext ctx=null;Hashtable<string,string> HashEnv =newHashtable<string,string>();HashEnv.put(Context.SECURITY_AUTHENTICATION, simple);// LDAP访问安全级别(none,simple,strong)HashEnv.put(Context.SECURITY_PRINCIPAL, username);//AD的用户名HashEnv.put(Context.SECURITY_CREDENTIALS, password);//AD的密码HashEnv.put(Context.INITIAL_CONTEXT_FACTORY,com.sun.jndi.ldap.LdapCtxFactory);// LDAP工厂类HashEnv.put(com.sun.jndi.ldap.connect.timeout,3000);//连接超时设置为3秒HashEnv.put(Context.PROVIDER_URL, ldap:// + host + : + post);// 默认端口389try{ctx =newInitialDirContext(HashEnv);// 初始化上下文System.out.println(身份验证成功!);}catch(AuthenticationException e) {System.out.println(身份验证失败!);e.printStackTrace();}catch(javax.naming.CommunicationException e) {System.out.println(AD域连接失败!);e.printStackTrace();}catch(Exception e) {System.out.println(身份验证未知异常!);e.printStackTrace();}finally{if(null!=ctx){try{ctx.close();ctx=null;}catch(Exception e) {e.printStackTrace();}}}}publicstaticvoidmain(String[] args) {AdTest.connect(10.10.2.116,389, herman@herman.com,123456);}}</string,string></string,string>代码到此结束了,看看运行效果吧:

使用java连接AD域,验证账号密码是否正确的更多相关文章
- 使用java连接AD域,验证账号password是否正确
web项目中有时候客户要求我们使用ad域进行身份确认,不再另外做一套用户管理系统.事实上客户就是仅仅要一套账号能够訪问全部的OA.CRM等办公系统. 这就是第三方验证.一般有AD域,Ldap,Radi ...
- java连接AD域
import org.springframework.boot.autoconfigure.SpringBootApplication; import java.util.Hashtable; imp ...
- java修改AD域用户密码使用SSL连接方式
正常情况下,JAVA修改AD域用户属性,只能修改一些普通属性, 如果要修改AD域用户密码和userAccountControl属性就得使用SSL连接的方式修改, SSL连接的方式需要操作以下步骤: 1 ...
- java ssl 连接AD域
1.安装证书服务和IIS服务,不需要启动asp.(其会在c盘生成一个crt文件)2.获取crt证书文件 windows 2003:文件位于系统盘根目录 windows 2008: 文件位于C:\Win ...
- .net 修改AD域中的密码
1.通过vs 2013 新建一个web站点(不是空项目),这个会带一下模板, 2.然后新建一个页面UpdatePassWord.aspx aspx页面内容: <%@ Page Title=&qu ...
- AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...
- SpringBoot注册登录(三):注册--验证账号密码是否符合格式及后台完成注册功能
SpringBoot注册登录(一):User表的设计点击打开链接SpringBoot注册登录(二):注册---验证码kaptcha的实现点击打开链接 SpringBoot注册登录(三):注册 ...
- eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?
eclipse 中main()函数中的String[] args如何使用? 右击你的项目,选择run as中选择 run configuration,选择arguments总的program argu ...
- AD 域服务简介(二)- Java 获取 AD 域用户
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 一.前言 先简单简单回顾上一篇 ...
随机推荐
- 51nod——1174 区间中最大的数(ST)
题目链接 给出一个有N个数的序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中,最大的数是多少. 例如: 1 7 6 3 1.i = 1, j = 3,对应的数为7 6 3,最大的数 ...
- 【Java基础】java中的反射机制与动态代理
一.java中的反射机制 java反射的官方定义:在运行状态下,可以获取任意一个类的所有属性和方法,并且可通过某类任意一对象实例调用该类的所有方法.这种动态获取类的信息及动态调用类中方法的功能称为ja ...
- VS第一天(一堆错误的错误示范)
自学VS第一天 (目标用vs做个不low的简历) 学习视频 https://www.bilibili.com/video/av48489320/?p=1 代码 写了一天的代码,自己理解的内容在注释里 ...
- django第五天(虚拟环境安装和视图层相关)
django第5天 虚拟环境安装 ''' 1.通过pip3安装虚拟环境: -- pip3 install virtualenv 2.前往目标文件夹: -- cd 目标文件夹 (C:\Virtualen ...
- 基础训练 Huffuman树
Huffuman树 /*解法一*/ #include<iostream> #include<queue> using namespace std; int main(){ pr ...
- PHP-redis命令之 字符串 (strings)
一.string (字符串) 1.set:设置键 $reids->set('mykey',111); 2.get:获取键 $redis->get('mykey'); 3.del:删除键 $ ...
- 输入url后发生了什么
(1)浏览器解析 (2)查询缓存 (3)DNS查询 顺序如下,若其中一步成功直接进去建立连接部分: -- 浏览器自身DNS -- 操作系统DNS -- 本地hosts文件 -- 像域名服务器发送请求 ...
- 【01】在 issue 中创建 list
[01]在 issue 中创建 list 你想在你的 issue中看到可多选的 list 么? 当你查看问题时,你想不想让它变成 2 of 5 这样的形式. 如果想,你可以在 issue 中使用以下句 ...
- android 之 service
在Activity中设置两个按钮,分别为启动和关闭Service: bt01.setOnClickListener(new Button.OnClickListener() { @Override ...
- Python常用操作符
Python常用操作符 1.成员关系操作符in 显示的数字前面填充'0'代替空格 6.转义字符 符号 含义 \' 单引号\" 双引号\a 发出系统响铃声\b 退格符\n 换行符\t 横向制表 ...