最近公司派遣去乙方公司做项目开发,之前做好了的登录模块,按理来说是可以完全复用的,但是乙方客户提出要求,要用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域认证,用户的登录UserNameString password = "";//AD域认证,用户的登录PassWordString host = "xxx.xxx.xxx.xxx";//AD域IP,必须填写正确String domain = "@xxx.xx";//域名后缀,例.@noker.cn.comString port = "389"; //端口,一般默认389String url = new String("ldap://" + host + ":" + port);//固定写法String user = userName.indexOf(domain) > 0 ? userName : userName+ domain;//网上有别的方法,但是在我这儿都不好使,建议这么使用Hashtable env = new Hashtable();//实例化一个EnvDirContext 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);//Urltry {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();}}}}
}

项目推荐



DC3是基于Spring Cloud的开源可分布式物联网(IOT)平台,用于快速开发、部署物联设备接入项目,是一整套物联系统解决方案。

Java实现AD域登录认证相关推荐

  1. java修改AD域用户密码使用SSL连接方式

    正常情况下,JAVA修改AD域用户属性,只能修改一些普通属性, 如果要修改AD域用户密码和userAccountControl属性就得使用SSL连接的方式修改, SSL连接的方式需要操作以下步骤: 1 ...

  2. AD 域服务简介(二)- Java 获取 AD 域用户

    博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 一.前言 先简单简单回顾上一篇 ...

  3. 2021-07-22 CentOS7.6 Samba使用AD域控认证(winbind),亲测有效。

    CentOS7.6 Samba使用AD域控认证(winbind),亲测有效. centos7: https://www.freesion.com/article/44621398696/ cetnos ...

  4. Java AD域登录实现正常本地登录操作

    Java 域登录 实现 前言 新建一个测试类 AD域的userName和passWord身份验证成功之后返回 身份验证失败之后返回 验证成功后将之代入项目登录的位置,根据自己的登录接口和登陆逻辑来修改 ...

  5. java操作ad域 免证书

    为什么80%的码农都做不了架构师?>>>    只提供免证书的认证部分,操作部分可以百度. 认证部分,得到context即可对域进行各种操作: /*** 本文章是针对java JND ...

  6. 使用JAVA进行ad域身份验证常用属性详解

    一些变态的公司经常对开发者提出一些变态的问题.比如在oa系统中,要求登录验证必须使用ad域进行登录.还有的如登录crm系统必须使用公司的阿里云邮箱账号进行身份验证等等. 作为程序员我们只能按照客户的需 ...

  7. Samba通过ad域进行认证并限制空间大小《转载》

    本文实现了samba服务被访问的时候通过windows域服务器进行用户名和密码验证;认证通过的用户可以自动分配500M的共享空间;在用户通过windows域登陆系统的时候可以自动把这块空间映射成一块硬 ...

  8. java 操作AD域代码(跳过证书版)

    1.AD域操作类 @Slf4j public class ADOperator {private final DomainConfigModel adConfig;private static fin ...

  9. .net ad域登录 form认证_golang|给Gitbook做个认证代理

    后台管理系统嵌入了Gitbook做帮助中心,需要给Gitbook添加下认证. 思路如下:修改Gitbook发布时的js,给每个URL拼接上用户登录后的Token,Gitbook前面有个代理获取这个To ...

最新文章

  1. 样本不平衡不均衡数据处理
  2. 使用谷歌 Colab Notebooks,这 6 个小技巧你需要掌握
  3. R语言sys方法:sys.getpid函数获取R会话的进程ID、sys.glob函数和file.path函数匹配文件夹下的所有特定类型文件、sys.info函数获取系统和用户信息
  4. “远程服务器返回错误: (404) 未找到”的正确解决方法
  5. 用“组策略”修改注册表十大个经典范例
  6. 部署Oracle数据库
  7. 细节无处不在!东莞网络推广分享哪些操作会影响网站优化效果?
  8. ctf-cybrics
  9. Latex入门:编辑器(texmaker+texlive)安装
  10. 使用三目运算嵌套方法 或 临时变量方法: 获取三个整数中最大值的数
  11. JavaScript中的的面向对象中的一些知识
  12. python中acosh_acosh()函数以及C ++中的示例
  13. linux命令---tar
  14. python-带返回值的装饰器
  15. 移动互联网“去哪儿”?
  16. c 语言程序设计(清华大学郑莉),清华大学 C++程序设计语言 45 郑莉 视频教程
  17. google四件套之Dagger2。从入门到爱不释手,之:Dagger2基础知识及在Java中使用(1)
  18. 流量红利渐失,电商的“新故事”往哪讲?
  19. 贡献一个fisco-bcos-browser-front基于官方的代码改造的兼容手机浏览器和pc浏览器
  20. java发送电子邮件

热门文章

  1. Z2021年全球家用自动血压计收入大约1018.7百万美元,预计2028年达到1194.2百万美元,2022至2028期间,年复合增长率CAGR为 %。同时2020年全球家用自动血压计销量大约 ,预计
  2. 深度学习模型DNN部署到安卓(移动)设备上——pytorch->onnx->ncnn->Android
  3. java开发的应用的有哪些
  4. STM32f1系列压力传感器MPX4250压力检测
  5. 声学参数-基频-Librosa标准: 基频的文字定义和用librosa提取wav文件基频
  6. 十六进制字符串转换为字节数组
  7. centos7.2 下 ffmpeg交叉编译(安卓版x86_64)
  8. SQLServer update语句用法
  9. Qt——用在ARM板上的Mplayer(1.3.0,1.0rc4)安装编译步骤!还有,Mplayer背景抖动闪烁问题解答,终于来了!
  10. JS高级笔记:CommonJs与ESModule的区别