使用java连接AD域,验证账号密码是否正确

简介:
eb项目中有时候客户要求我们使用ad域进行身份确认,不再另外做一套用户管理 系统。其实客户就是只要一套账号可以访问所有的OA,CRM等办公系统。
这就是第三方验证。一般有AD域,Ldap,Radius,邮件服务器等。最常用的要数AD域了。因为window系统在国内占据了大量的江山。做起来也很方便。
我这篇文章就是写,如何用java去实现AD域的身份验证。好了,直接看代码吧:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package  com.test;
 
import  java.util.Hashtable;
 
import  javax.naming.AuthenticationException;
import  javax.naming.Context;
import  javax.naming.directory.DirContext;
import  javax.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
  */
public  class  AdTest {
     
     /**
      * 使用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 密码
      */
     public  static  void  connect(String host,String post,String username,String password) {
         DirContext ctx= null ;
         Hashtable<string,string> HashEnv = new  Hashtable<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);// 默认端口389
         try  {
             ctx = new  InitialDirContext(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();
                 }
             }
         }
     }
     
     public  static  void  main(String[] args) {
         AdTest.connect( 10.10 . 2.116 , 389 , herman @herman .com, 123456 );
     }
}
</string,string></string,string>

代码到此结束了,看看运行效果吧:\

 

 

本文转自二郎三郎博客园博客,原文链接:http://www.cnblogs.com/haore147/p/5213728.html,如需转载请自行联系原作者
相关文章
|
6月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
250 13
|
存储 Java 关系型数据库
高效连接之道:Java连接池原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。频繁创建和关闭连接会消耗大量资源,导致性能瓶颈。为此,Java连接池技术通过复用连接,实现高效、稳定的数据库连接管理。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接池的基本操作、配置和使用方法,以及在电商应用中的具体应用示例。
389 5
|
消息中间件 存储 NoSQL
java连接redis和基础操作命令
通过以上内容,您可以掌握在Java中连接Redis以及进行基础操作的基本方法,进而在实际项目中灵活应用。
637 30
|
Java Linux 数据库
java连接kerberos用户认证
java连接kerberos用户认证
389 22
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
661 2
|
Java 关系型数据库 MySQL
如何用java的虚拟线程连接数据库
本文介绍了如何使用Java虚拟线程连接数据库,包括设置JDK版本、创建虚拟线程的方法和使用虚拟线程连接MySQL数据库的示例代码。
374 6
如何用java的虚拟线程连接数据库
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
840 6
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
295 3
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
276 1
|
Java 数据库连接 数据库
Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销
本文深入探讨了Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销,显著提升了系统的响应速度和吞吐量。文章介绍了连接池的工作原理,并以HikariCP为例,展示了如何在Java应用中使用连接池。通过合理配置和优化,连接池技术能够有效提升应用性能。
250 1