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


相关推荐

  • Samba服务器配置(什么情况下需要服务器)

    一、简介  Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,SMB(ServerMessageBlock)服务器消息块  Samba最大的功能是可以用于Linux与windows系统直接的文件共享和打印共享,既可以用于Windows与linux之间的文件共享也可以用于linux与linux之间的资源共享  基于客户机/服务器的协议,因而一台S…

    2022年4月14日
  • 线性代数代码实现(六)矩阵除法(C++)

    线性代数代码实现(六)矩阵除法(C++)前言:距离上一篇文章发布已经五天过去了,在这里先给一直等待的伙伴们说声抱歉,因为博主最近的事情很多,只好暂时停更,望大家理解!上一篇文章中,我们介绍了求解逆矩阵的方法,我提到,可逆矩阵可以定义除法。这一篇文章中,讨论一下怎样实现矩阵除法!一、线性代数知识回顾:事实上,矩阵没有“除法”这一概念,我们的“除法”实际上是用以下方式来定义的:设矩阵,,,其中为可逆矩阵,满足以下等式:变换得:如果我们换一种写法,就成了:这样就定义了矩阵除法,我把它称…

    2022年6月18日
  • Pycharm—-设置背景颜色和字体的样式「建议收藏」

    Pycharm—-设置背景颜色和字体的样式「建议收藏」编辑器默认显示的样式背景为白色,看着会刺眼,也不方便查找我们写的某些参数等,通过设定,可以对页面的样式进行选择更改,方便直观的在编辑器中查看自己所写的代码,设置前:设置后操作方式:转载于:https://www.cnblogs.com/syw20170419/p/10984023.html…

    2022年8月28日
  • Activiti教程二

    Activiti教程二一搭建环境1.1JDK6+1.2Ant1.8.1+1.3Eclipse3.7+1.4Activiti-eclipsedesigner插件安装1.4.1先安装GEF插件1.4.2安装SVN插件1.4.3安装Maven插件1.4.4最后安装Activiti-eclipsedesigner二开始activiti5.12.1的第一个demo

    2022年7月21日
  • XXX测试用例设计?XXX怎么测试?(行李箱、电梯、水杯、笔、椅子)

    XXX测试用例设计?XXX怎么测试?(行李箱、电梯、水杯、笔、椅子)建议回答内容:功能测试(单个功能、逻辑业务/功能交互)、界面测试、易用性测试、兼容性测试、安全性测试、性能测试行李箱我不知道这个行李箱的具体需求,所以会以我认知的行李箱来思考从功能测试来考虑的话,拉杆箱大小、厚度、容量、各个面(包括拉杆面、脚轮面)承重拉杆承重是否符合质检标准;超出容量、超出承重会有什么影响;拉杆的伸缩收回是否灵活;箱子的开锁解锁是否方便安全;界面测试,我会考虑箱子的材质、颜色、花纹、形状是否符合要求;箱子吊牌logo是否正确易用性方面,箱子拉杆手把是否易握防滑、箱子

    2022年5月1日
  • 有没有支持5V输入和9V输入给两串8.4V锂电池充电的芯片IC「建议收藏」

    有没有支持5V输入和9V输入给两串8.4V锂电池充电的芯片IC「建议收藏」有的FS4062支持5V和9V同步升降压充电8.4V两床锂电池,也就是5V9V适配器自动识别两串8.4V锂电池高效充电管理芯片概述:FS4062是一款宽电压输入,专门为7.4V双节锂电池充电的充电管理芯片,兼容5V,9V适配器。在5V供电的情况下,实现升压充电,电池端最大充电电流1.3A,在9V供电的情况下,实现降压充电,电池端最大充电电流1.2A,充电电流可以通过外置电阻RSET来设定。低阻抗的电源通路可以使充电效率更高,减少充电时间,提高电池使用寿命。.

    2022年10月6日

发表回复

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

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