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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ODT珂朵莉树「建议收藏」

    ODT珂朵莉树「建议收藏」珂朵莉树の由来珂朵莉树(或称ODT(OldDriverTree老司机树))这毒瘤算法由CodeForces-896CWillem,ChthollyandSeniorious的正解衍化而来由于其骗分暴力的非正统算法思想虽然很多时候在随机数据下跑时不错但切记这只是骗分暴力,时间复杂度上并不正确什么时候用珂朵莉树珂朵莉树一般用来解决本来应当由线段树解决的区间类问题而使…

    2025年10月16日
    3
  • Fleet问题

    Fleet问题1.  是否能自由部署fleetservices在1台或多台machine上。(可以指定部署1个服务在某台机器上,或者指定某个服务在多台机器上)

    2022年4月26日
    61
  • php错误处理_MSVCP120.dll

    php错误处理_MSVCP120.dll当您搜索“phpMSVCR110.dll”时,由于此问题的链接显示在返回结果的最上方(更不用说它的浏览量已超过10万,并且还在不断增长),因此,这里有一些其他说明,在您寻求以下内容时可能会派上用场解决MSVCR110.dll错误…答案中描述的方法不仅对MSVCR110.dll情况有效,而且在寻找其他版本(例如较新的MSVCR71.dll)时也适用,并且我将答案更新为包括VC15,即使它不…

    2025年7月27日
    4
  • 读取inputstream里面的内容(psRAW转档怎么显示缩略图)

    packagecom.xiaobu.test.InputStream;importorg.apache.commons.io.IOUtils;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.StringWriter;/**…

    2022年4月16日
    61
  • 华为s2700交换机配置vlan_同一交换机vlan互通

    华为s2700交换机配置vlan_同一交换机vlan互通原标题:华为S5700系列配置实例华为S5700系列配置一、#telnet远程登录步骤一:创建VLAN,并配置交换机VLAN的管理IP#创建vlansystem-view[Quidway]vlanxxx(vlanID)[Quidway-vlanID]quit#配置管理IP[Quidway]interfacevlanID[Quidway-VlanifID]ipaddress…

    2026年1月26日
    5
  • Entity Framework

    Entity Framework

    2021年7月7日
    94

发表回复

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

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