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


相关推荐

  • C++解析XML文件[通俗易懂]

    C++解析XML文件[通俗易懂]C++解析XML文件TinyXML安装下载解析XML文件最近在使用C++处理GF-3和RADARSAT-2雷达影像,需要通过解析XML文件获取影像时间,我选用了TinyXML库来解析。参考了网上的一些教程,这个文档个人觉得是解释的很清晰的。(https://www.cnblogs.com/hgwang/p/5833638.html),第一次使用记录一下学习过程,供以后参考。TinyXML安装下…

    2022年7月14日
    17
  • 安卓微信本地数据库解密[通俗易懂]

    安卓微信本地数据库解密[通俗易懂]安卓微信数据库解密

    2022年5月6日
    235
  • Jenkins(5)生成allure报告

    Jenkins(5)生成allure报告前言jenkins集成了allure插件,安装插件后运行pytest+allure的脚本即可在jenkins上查看allure报告了。allure安装在运行代码的服务器本机,我这里是用的dock

    2022年7月29日
    5
  • 利用ESP定律的upx脱壳实践

    利用ESP定律的upx脱壳实践利用ESP定律的upx脱壳实践背景:除了命令行upx-d脱壳,还有手动脱壳。ESP定律的本质是堆栈平衡,又称堆栈平衡定律,是应用频率最高的脱壳方法之一,脱壳的目的就是找到真正的OEP(源文件的EP代码)方法:从pushad到popad是一段解压缩代码(解压UPX壳),这段代码执行后,紧跟在popad后的第一个JMP指令可跳转到OEP实践:1:查壳2:OD打开3:F8//对于寄存器,指令执行后发生改变的寄存器会用红色显示.此处ESP和EIP的值发生改变,因为执行pushad指令,将8个

    2022年7月19日
    11
  • USB转RS485代替PC/PPI通讯电缆

    USB转RS485代替PC/PPI通讯电缆S7-200的CPU使用的是RS485,PC机有RS232口和USB口,两种接口电气规范不同,需要用中间电路转换成同一接口类型。现在常用的PC/PPI其实就是一根USB/RS485的匹配电缆。

    2022年5月7日
    183
  • jQuery网页版五子棋小游戏源码下载

    体验效果:http://hovertree.com/texiao/game/4/网页五子棋源代码:jquery五子棋游戏-黑子白子先手后手开始胜率:100%更多:http://www.cnblogs

    2021年12月21日
    40

发表回复

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

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