完成ldap验证代码!需要将服务器url参数化!

This commit is contained in:
Kane 2022-08-28 01:01:55 +08:00
parent 824b0750fb
commit bcef07f82d
3 changed files with 185 additions and 5 deletions

View File

@ -0,0 +1,65 @@
/*
* @Author: Kane
* @Date: 2022-05-25 19:32:18
* @LastEditors: Kane
* @LastEditTime: 2022-08-28 00:53:09
* @FilePath: \cpicxim-servlets\src\main\java\com\cpic\xim\ldap\CpicLDAP.java
* @Description:
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
package com.cpic.xim.ldap;
import javax.naming.CommunicationException;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import java.util.Hashtable;
public class CpicLDAP
{
private static String ldapServerUrl = "ldap://10.39.0.205:389";
public static boolean ldapLogin( String serverURL, String userName, String password )
{
boolean result = false;
if ( userName.endsWith( "@pr.intra.cpic.com.cn" ) == false)
{
userName += "@pr.intra.cpic.com.cn";
}
DirContext ctx = null;
Hashtable<String, String> ldap = new Hashtable<String, String>();
ldap.put( Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory" );
ldap.put( Context.SECURITY_AUTHENTICATION, "simple" );
ldap.put( Context.PROVIDER_URL, ldapServerUrl );
ldap.put( Context.SECURITY_PRINCIPAL, userName );
ldap.put( Context.SECURITY_CREDENTIALS, password );
try
{
ctx = new InitialDirContext( ldap );
ctx.close();
result = true;
}
catch ( CommunicationException error )
{
error.printStackTrace();
error.getMessage();
result = false;
}
catch ( NamingException error )
{
error.printStackTrace();
result = false;
}
return result;
}
}

View File

@ -1,15 +1,15 @@
/** /*
* @Author: Kane * @Author: Kane
* @date: 2022-08-27 22:20:38 * @Date: 2022-08-27 22:20:38
* @LastEditors: Kane * @LastEditors: Kane
* @LastEditTime: 2022-08-27 23:32:36 * @LastEditTime: 2022-08-28 01:01:28
* @FilePath: \cpicxim-servlets\src\main\java\com\cpic\xim\servlets\LdapServlet.java * @FilePath: \cpicxim-servlets\src\main\java\com\cpic\xim\servlets\ldap\LdapServlet.java
* @Description: * @Description:
* *
* Copyright (c) ${2022} by Kane, All Rights Reserved. * Copyright (c) ${2022} by Kane, All Rights Reserved.
*/ */
package com.cpic.xim.servlets; package com.cpic.xim.servlets.ldap;
import java.io.IOException; import java.io.IOException;
import java.io.BufferedReader; import java.io.BufferedReader;
@ -18,6 +18,7 @@ import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.databind.*;
public class LdapServlet extends HttpServlet public class LdapServlet extends HttpServlet
{ {
@ -40,6 +41,9 @@ public class LdapServlet extends HttpServlet
writer.write( "{ \"returnMessage\": \"请用post请求调用本接口\"}" ); writer.write( "{ \"returnMessage\": \"请用post请求调用本接口\"}" );
} }
/*****************************************************
* 响应post请求将请求体的json字符串转换后用于ldap验证
*****************************************************/
@Override @Override
public void doPost( HttpServletRequest request, HttpServletResponse response ) public void doPost( HttpServletRequest request, HttpServletResponse response )
throws ServletException, IOException throws ServletException, IOException
@ -48,6 +52,8 @@ public class LdapServlet extends HttpServlet
response.setCharacterEncoding( "UTF-8" ); response.setCharacterEncoding( "UTF-8" );
request.setCharacterEncoding( "UTF-8" ); request.setCharacterEncoding( "UTF-8" );
PrintWriter writer = response.getWriter();
BufferedReader reader = request.getReader(); BufferedReader reader = request.getReader();
String line; String line;
StringBuilder requestString = new StringBuilder(); StringBuilder requestString = new StringBuilder();
@ -57,5 +63,23 @@ public class LdapServlet extends HttpServlet
requestString.append( line ); requestString.append( line );
} }
LdapStuffInfo stuffInfo;
// 转换json
try
{
ObjectMapper mapper = new ObjectMapper();
stuffInfo = mapper.readValue( requestString.toString(), LdapStuffInfo.class );
}
catch ( IOException error )
{
// 如果转换json失败不抛出异常
// 返回请求内容解析失败的提示
writer.write( "{ \"returnMessage\": \"请求内容不是合法的json字符串\"}" );
return;
}
} }
} }

View File

@ -0,0 +1,91 @@
/*
* @Author: Kane
* @Date: 2022-08-28 00:13:12
* @LastEditors: Kane
* @LastEditTime: 2022-08-28 00:27:27
* @FilePath: \cpicxim-servlets\src\main\java\com\cpic\xim\servlets\ldap\LdapStuffInfo.java
* @Description:
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
package com.cpic.xim.servlets.ldap;
import com.fasterxml.jackson.annotation.JsonProperty;
/*****************************************************
* 太平洋保险ldap用户信息对象
* @author Kane
* @version 1.0
*****************************************************/
public class LdapStuffInfo
{
public LdapStuffInfo( String ldapStuffName, String ldapStuffPassword)
{
this.ldapStuffName = ldapStuffName;
this.ldapStuffPassword = ldapStuffPassword;
}
public String getLdapStuffName()
{
return ldapStuffName;
}
public void setLdapStuffName( String ldapStuffName )
{
this.ldapStuffName = ldapStuffName;
}
public String getLdapStuffPassword()
{
return ldapStuffPassword;
}
public void setLdapStuffPassword( String ldapStuffPassword )
{
this.ldapStuffPassword = ldapStuffPassword;
}
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + ((ldapStuffName == null) ? 0 : ldapStuffName.hashCode());
result = prime * result + ((ldapStuffPassword == null) ? 0 : ldapStuffPassword.hashCode());
return result;
}
@Override
public boolean equals( Object obj )
{
if ( this == obj)
return true;
if ( obj == null)
return false;
if ( getClass() != obj.getClass())
return false;
LdapStuffInfo other = (LdapStuffInfo) obj;
if ( ldapStuffName == null)
{
if ( other.ldapStuffName != null)
return false;
} else if ( !ldapStuffName.equals( other.ldapStuffName ))
return false;
if ( ldapStuffPassword == null)
{
if ( other.ldapStuffPassword != null)
return false;
} else if ( !ldapStuffPassword.equals( other.ldapStuffPassword ))
return false;
return true;
}
@JsonProperty( "stuff_name")
private String ldapStuffName;
@JsonProperty( "stuff_password")
private String ldapStuffPassword;
}