用户名+密码登录ldap服务器,注意密码没有存储在ldap中的password
来源:互联网 发布:淘宝如何合并订单 编辑:程序博客网 时间:2024/05/22 17:27
用用户名+密码模拟登录ldap服务器,不是从ldap中获取密码比较
public class LdapUserAuthenticate {private String URL = "ldap://10.41.83.236:389/";private String BASEDN = "dc=zte,dc=intra";private String FACTORY = "com.sun.jndi.ldap.LdapCtxFactory";private LdapContext ctx = null;private Hashtable<String, String> env=null;private Control[] connCtls = null;private SearchResult searchResult;private void connectToLDAPServer() {env = new Hashtable<String, String>();env.put(Context.INITIAL_CONTEXT_FACTORY, FACTORY);env.put(Context.PROVIDER_URL, URL + BASEDN);// LDAP serverenv.put(Context.SECURITY_AUTHENTICATION, "simple");// 此处若不指定用户名和密码,则自动转换为匿名登录env.put(Context.SECURITY_PRINCIPAL,"cn=gitlab,ou=NM,ou=Central R&D Institute,ou=R&D Institute,dc=zte,dc=intra");env.put(Context.SECURITY_CREDENTIALS, "gitlab");try {connCtls = new Control[] { new LdapADManagerControl() };ctx = new InitialLdapContext(env, connCtls);} catch (javax.naming.AuthenticationException e) {System.out.println("Authentication faild: " + e.toString());} catch (Exception e) {System.out.println("Something wrong while authenticating: " + e.toString());}}class LdapADManagerControl implements Control {@Overridepublic String getID() {// TODO Auto-generated method stubreturn null;}@Overridepublic boolean isCritical() {// TODO Auto-generated method stubreturn false;}@Overridepublic byte[] getEncodedValue() {// TODO Auto-generated method stubreturn null;}}private String getUserDN(String ID) {String userDN = "";connectToLDAPServer();try {SearchControls constraints = new SearchControls();constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);NamingEnumeration<?> en = ctx.search("", "sAMAccountName=" + ID, constraints);if (en == null) {System.out.println("Have no NamingEnumeration.");}if (!en.hasMoreElements()) {System.out.println("Have no element.");}while (en != null && en.hasMoreElements()) {// maybe more than one// // elementObject obj = en.nextElement();if (obj instanceof SearchResult) {SearchResult si = (SearchResult) obj;userDN += si.getName();userDN += "," + BASEDN;searchResult = si;} else {System.out.println(obj);}}} catch (Exception e) {System.out.println("Exception in search():" + e);}return userDN;}public String authenricate(String ID, String password) {String username = null;if (ID.equals("") || password.equals(""))return null;else {String userDN = "";try {userDN = getUserDN(ID);if (userDN.equals(""))return null;ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, userDN);ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, password);ctx.reconnect(connCtls);String longName = (String)searchResult.getAttributes().get("CN").get();username = longName.split("\\d+")[0];return username;} catch (AuthenticationException e) {System.out.println(userDN + " is not authenticated");System.out.println(e.toString());} catch (NamingException e) {System.out.println(userDN + " is not authenticated");}catch (Exception e) {System.out.println(userDN + " is not authenticated");}return null;}}}
LdapUserAuthenticate authen = new LdapUserAuthenticate();username = authen.authenricate(userid,password);if (username == null) {System.out.println("登陆失败");response.sendRedirect("login.html");}else{System.out.println("登陆成功");CookieUtil.addCookie(response, "userName", username, 1800);response.sendRedirect(referer);}
1 0
- 用户名+密码登录ldap服务器,注意密码没有存储在ldap中的password
- [C#]LDAP验证用户名和密码
- LDAP对用户名,密码进行域验证
- C# 用 LDAP 验证用户名和密码
- Python 用 LDAP 验证用户名和密码
- ldap 修改密码方案
- LDAP密码认证例子
- JSP 连接远程 LDAP 实现用户名和密码验证
- JSP 连接远程LDAP 实现用户名和密码验证
- LDAP 用户认证 判断输入用户名和密码是否正确
- websphere8.5+LDAP+ear war包发布成功,能访问到登录页面,输入用户名密码登录不了
- 使用ldap登录服务器
- Ldap服务器登录配置
- 使用PHP登录Ldap服务器
- ssh 用户名密码登录
- rtsp 用户名、密码登录
- 登录记住用户名密码
- 用户名,密码,登录
- jdbc的数据库驱动类DriverManager.getConnection()参数
- Java中 a++ 和 ++a 的区别
- Bundle传值
- 完整版三维地质建模软件系统
- Log4j 2配置与IntelliJ IDEA控制台颜色
- 用户名+密码登录ldap服务器,注意密码没有存储在ldap中的password
- 小白的代码审计之路(一)
- iOS模拟器simuator无法响应
- 射频识别技术漫谈(29)——射频接口芯片TRF7960
- HTML5本地存储——IndexedDB入门
- MVC View中获取action、controller、area名称、参数
- 漫画赏析:Linux 内核到底长啥样
- bat批处理文件中文乱码
- 音视频相关知识总结