ldap协议 java_java如何调用ldap协议【LdapContext】

背景:

做了个系统需要用集团的用户id登录。而集团用户系统是用ldap做的。

关键知识点

1. 设置连接

ctx = new InitialLdapContext(env, connCtls);

2.设置url和查询的子路径

env.put(Context.PROVIDER_URL, URL);// LDAP server

env.put(Context.SECURITY_PRINCIPAL, SEARCHDN);

3. 设置密码

env.put(Context.SECURITY_CREDENTIALS, "password");

4.取得返回值属性

if (obj instanceof SearchResult) {

SearchResult si = (SearchResult) obj;

Attributes userInfo = si.getAttributes();

userDN += userInfo.toString();

userDN += "," + BASEDN;

}

5.不需要下载任何第三方办,什么ldapjdk.jar不用的

背景知识:

LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到

附源码如下:

package com.domain;

import java.util.Hashtable;

import javax.naming.AuthenticationException;

import javax.naming.Context;

import javax.naming.NamingEnumeration;

import javax.naming.NamingException;

import javax.naming.directory.Attributes;

import javax.naming.directory.SearchControls;

import javax.naming.directory.SearchResult;

import javax.naming.ldap.Control;

import javax.naming.ldap.InitialLdapContext;

import javax.naming.ldap.LdapContext;

public class UserAuthenticate {

private String URL = "ldap://localhost:389";

private String SEARCHDN = "CN=alimailfad,OU=service,DC=hz,DC=ali,DC=com";

private String FACTORY = "com.sun.jndi.ldap.LdapCtxFactory";

private String BASEDN = "DC=hz,DC=ali,DC=com";

private LdapContext ctx = null;

private Hashtable env = null;

private Control[] connCtls = null;

private void LDAP_connect() {

env = new Hashtable();

env.put(Context.INITIAL_CONTEXT_FACTORY, FACTORY);

env.put(Context.PROVIDER_URL, URL);// LDAP server

env.put(Context.SECURITY_PRINCIPAL, SEARCHDN);

env.put(Context.SECURITY_AUTHENTICATION, "simple");

env.put(Context.SECURITY_CREDENTIALS, "password");

// 此处若不指定用户名和密码,则自动转换为匿名登录

try {

ctx = new InitialLdapContext(env, connCtls);

} catch (NamingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

private String getUserDN(String email) {

String userDN = "";

LDAP_connect();

try {

String filters = "(&(&(objectCategory=person)(objectClass=user))(sAMAccountName=elbert.chenh))";

String[] returnedAtts = { "distinguishedName",

"userAccountControl", "displayName", "employeeID" };

SearchControls constraints = new SearchControls();

constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);

if (returnedAtts != null && returnedAtts.length > 0) {

constraints.setReturningAttributes(returnedAtts);

}

NamingEnumeration en = ctx.search(BASEDN, filters, constraints);

if (en == null) {

System.out.println("Have no NamingEnumeration.");

}

if (!en.hasMoreElements()) {

System.out.println("Have no element.");

} else {

while (en != null && en.hasMoreElements()) {

Object obj = en.nextElement();

if (obj instanceof SearchResult) {

SearchResult si = (SearchResult) obj;

Attributes userInfo = si.getAttributes();

userDN += userInfo.toString();

userDN += "," + BASEDN;

} else {

System.out.println(obj.toString());

}

System.out.println(userDN);

}

}

} catch (Exception e) {

System.out.println("Exception in search():" + e);

}

return userDN;

}

public boolean authenricate(String ID, String password) {

boolean valide = false;

String userDN = getUserDN(ID);

try {

ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, userDN);

ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, password);

ctx.reconnect(connCtls);

System.out.println(userDN + " is authenticated");

valide = true;

} catch (AuthenticationException e) {

System.out.println(userDN + " is not authenticated");

System.out.println(e.toString());

valide = false;

} catch (NamingException e) {

System.out.println(userDN + " is not authenticated");

valide = false;

}

return valide;

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561990.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML+CSS+JS实现 ❤️经典霓虹灯英文字母特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

操作系统分区分配java算法_合肥工业大学操作系统课程设计 动态分区分配存储管理java版.doc...

合肥工业大学操作系统课程设计 动态分区分配存储管理java版.doc 1课程设计动态分区分配存储管理设计题目学号专业班级学生姓名号指导教师22010年12月合肥工业大学课程设计任务书设计题目动态分区分配存储管理成绩主要内容动态分区分配存储管理建立描述内存分配状况的数据结构&a…

HTML+CSS+JS实现 ❤️感谢关注3D文字动画特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

java中字符串后加Box_字符串未显示在JavaFX中ComboBox的Tableview上

我一直在尝试在Java中显示我从组合框到表视图的选择 . 我花了好几个小时都在寻找解决方案,但没有用 . 我没有任何错误,但我似乎无法在TableView上显示一个字符串 . 我想请求帮助 .MainView.java有组合框和单击按钮的位置,它应该将组合框中的字…

HTML+CSS+JS实现 ❤️基于Javascript简单计算器特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

java font 字体 隶书_在font标记对,将字体设置成“隶书”,设置属性( )=隶书。...

字体夏季影响我国大部分地区的大气活动中心是太平洋高压和阿留申低压。Q0.0和Q0.1只要有一个继电器线圈先接通,记对另一个就不能再接通,从而保证任何时候两者都不能同时起动,这种控制方式称为()。按照工作方式的不同,设置书设置属…

HTML+CSS+JS实现 ❤️高光立体游戏卡片悬停ui特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

java获取500错误_HTTP 500错误

IIS5的HTTP 500内部服务器错误是我们经常碰到的错误之一,它的主要错误表现就是ASP程序不能浏览但HTM静态网页不受影响。另外当错误发生时,系统事件日志和安全事件日志都会有相应的记录。具体如下……一.错误表现IIS5的HTTP 500内部服务器错误是我们经常碰…

HTML+CSS+JS实现 ❤️流星天体动画场景特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

java的uuid有什么用_java – 什么是有效的UUID?

我生成UUID,并在我的代码中对正则表达式进行有效;我刚遇到困扰我的问题以下是生成UUID的代码(在mongodb上下文中)import java.util.UUID;... ...Document setOnInsert new Document(Params.sender, UUID.randomUUID()).append(Params.userDevice, userDevice).append(Params.h…

HTML+CSS+JS实现 ❤️创意几何love字母特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

java客户端连接请求发不出去_java – Spring:客户端发送的请求在语法上不正确()...

嗨,我在重定向期间收到下一个错误:The request sent by the client was syntactically incorrect浏览器显示的URL是:localhost:8080 / Project / menu / main / home / 0,这里我的类重定向首先 – “从”,第…

HTML+CSS+JS实现 ❤️卡通湖面上日出动画特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

HTML+CSS+JS实现 ❤️爱心文字3D旋转动画特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

php连接oracle很慢是什么原因_通过DB LINK插入速度很慢的问题

DB2上做的10046的Trace,内容截图如下:*** 2011-01-13 11:11:24.805WAIT #3068448836: namSQL*Net more data from dblink ela 1035392 driver id675562835 #bytes33 p30 obj#-1 tim1294888284805778WAIT #3068448836: namSQL*Net more data from dblink …

HTML+CSS+JS实现 ❤️飞行人物图标动画特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

python产生10个不同的随机数组成列表并求平均值_计算多个随机数的平均数Python...

我对Python相当陌生,在尝试计算一堆随机数的平均值时遇到了一个障碍数字。那个该程序的总体概述是,它是一个模具轧制程序,它提示用户输入一定数量的边,然后滚动,直到程序输出蛇眼。它还可以记录下双打的数量以及蛇眼花…

HTML+CSS+JS实现 ❤️酷炫情人节爱心动画特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

java 一对一的关系_与休眠一对一关系 - java

我尝试在两个表之间创建一对一的关系。其中之一是Person:public class Person implements Serializable {static final long serialVersionUID 1L;private long id;private String _email;private String _pass;public long getId() {return id;}public void setId…

HTML+CSS+JS实现 ❤️透明等离子球ui特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…