Java实现AD域登录认证「建议收藏」

Java实现AD域登录认证「建议收藏」web项目中有时候客户要求我们使用ad域进行身份确认,不再另外做一套用户管理系统。其实客户就是只要一套账号可以访问所有的OA,CRM等办公系统。这就是第三方验证。一般有AD域,Ldap,Radius,邮件服务器等。最常用的要数AD域了。因为window系统在国内占据了大量的江山。做起来也很方便。我这篇文章就是写,如何用java去实现AD域的身份验证。好了,直接看代码吧:

大家好,又见面了,我是你们的朋友全栈君。

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

package com.app;

import java.util.Hashtable;

import javax.naming.AuthenticationException;
import javax.naming.Context;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;

public class AdLogin { 
   
    public static void main(String[] args) { 
   
        String userName = "username";//AD域认证,用户的登录UserName
        String password = "";//AD域认证,用户的登录PassWord
        String host = "xxx.xxx.xxx.xxx";//AD域IP,必须填写正确
        String domain = "@xxx.xx";//域名后缀,例.@noker.cn.com
        String port = "389"; //端口,一般默认389
        String url = new String("ldap://" + host + ":" + port);//固定写法
        String user = userName.indexOf(domain) > 0 ? userName : userName
                + domain;//网上有别的方法,但是在我这儿都不好使,建议这么使用
        Hashtable env = new Hashtable();//实例化一个Env
        DirContext ctx = null;
        env.put(Context.SECURITY_AUTHENTICATION, "simple");//LDAP访问安全级别(none,simple,strong),一种模式,这么写就行
        env.put(Context.SECURITY_PRINCIPAL, user); //用户名
        env.put(Context.SECURITY_CREDENTIALS, password);//密码
        env.put(Context.INITIAL_CONTEXT_FACTORY,
                "com.sun.jndi.ldap.LdapCtxFactory");// LDAP工厂类
        env.put(Context.PROVIDER_URL, url);//Url
        try { 
   
            ctx = new InitialDirContext(env);// 初始化上下文
            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();
                }
            }
        }
    }
}

项目推荐

Java实现AD域登录认证「建议收藏」
Java实现AD域登录认证「建议收藏」 Java实现AD域登录认证「建议收藏」 Java实现AD域登录认证「建议收藏」 Java实现AD域登录认证「建议收藏」
DC3是基于Spring Cloud的开源可分布式物联网(IOT)平台,用于快速开发、部署物联设备接入项目,是一整套物联系统解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145621.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • lua编写游戏脚本教程_ps2游戏转ps4pkg

    lua编写游戏脚本教程_ps2游戏转ps4pkg先扫盲WQSG是干什么用的一些掌机类游戏汉化比方PSPNDS汉化必备之物它能够依据字典转换文本假设你不知道这是啥玩意,快去充电染成茜色的坂道文本提取(导出)方法(下文称导出文章)在导出文章,我

    2022年8月4日
    14
  • matlab中@的用法[通俗易懂]

    matlab中@的用法[通俗易懂]@是用于定义函数句柄的操作符。函数句柄既是一种变量,可以用于传参和赋值;也是可以当做函数名一样使用。举例:sin是matlab中的一个函数,但sin只是函数名,还不是函数句柄,不可以用于传参。f=@sin;这行代码定义了一个函数句柄,变量名是f。这样就可以当做参数传递了(这就是上面代码中的意义所在),而且还可以跟sin函数按相同的语法规则使用:g=f;%g也是函数句柄,其“值”和f一样…

    2022年7月17日
    15
  • LM优化算法_lm算法内参计算

    LM优化算法_lm算法内参计算LM算法理论知识梯度下降高斯牛顿Levenberg–Marquardt算法框架算法的整体流程求解器update流程说明算法实现头文件cpp算法调用LM优化算法,是一种非线性优化算法,其可以看作是梯度下降和高斯牛顿法的结合。综合了梯度下降对初值不敏感和高斯牛顿在最优值附近收敛速度快的特点。本人非数学专业,且对算法理解可能不到位,详细的算法推导及各个优化算法之间的关系,非常推荐看**《METHODSFORNON-LINEARLEASTSQUARESPROBLEMS》**,其介绍更详细也更专业。

    2022年9月30日
    2
  • fp6277升压5v电路_锂电池充电升压芯片

    fp6277升压5v电路_锂电池充电升压芯片双节锂电升压充电芯片

    2022年10月7日
    2
  • 宽字节注入原理_sqlmap宽字节注入

    宽字节注入原理_sqlmap宽字节注入在mysql中,用于转义的函数有addslashes,mysql_real_escape_string,mysql_escape_string等,还有一种情况是magic_quote_gpc,不过高版本的PHP将去除这个特性。首先,宽字节注入与HTML页面编码是无关的,笔者曾经看到<metacharset=utf8>就放弃了尝试,这是一个误区,SQL注入不是XSS。虽然他们中编码的成…

    2022年10月14日
    3
  • Java基础(面向对象三大特性)

    Java基础(面向对象三大特性)目标:Java基础(面向对象三大特性)文章目录前言Java的三大特性?总结前言JAVA的地位Java具有面向对象、与平台无关、安全、稳定和多线程等优良特性,是目前软件设计中优秀的编程语言。提示:以下是本篇文章正文内容。Java的三大特性?1.封装性面向对象编程的核心思想之一是将数据的操作封装在一起。通过抽象,即从具体的实例中抽取出共同的性质形成一班的概念,例如类的概念。例如把生活中的一些行为称作是它们具有的方法,而属性是它们的状态描述,仅仅用属性或行为不能很好地描述它们。人们经常谈.

    2022年7月16日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号