AD验证Domino用户的Java script库

    技术2022-05-20  53

    libScriptAD 库(Java程序)

    /* 『函数库功能』

    *       此函数库根据用户名和密码,连接AD Server,进行用户名和密码验证

    *  『函数库接口』

    *   用户输入的用户名和密码

    *  『函数库返回值』

    *    success:AD验证成功

    *    notuser: AD中未找到此用户

    *    passerror: 用户密码错误

    *  『备注』

    *   此代码可在OA登录时应用

    */

    import lotus.domino.*;

    import javax.naming.*;

    import javax.naming.directory.*;import java.util.Hashtable;

    //构造函数ADAuth

    public class ADAuth { 

       static String ldapip = "";

       public ADAuth(String strIP)

        {

                       //获得LDAP的IP地址

                       ldapip = strIP;

        }

      public static String login( String email, String password ) {   

    /** 根据用户名和密码进行验证 **/

     

        Hashtable env = null;    /** 目录 */

        DirContext ctx = null;    /** 认证狀态 */

        boolean logged = true;    env = new Hashtable();

        env.put( Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");

        // 连接LDAP

        env.put( Context.PROVIDER_URL, "ldap://"+ldapip+":389/");

        // 使用 username + password 进行认证

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

    // 使用用户的完整 email ,也就是 AD 中的 ${sAMAccountName}@your.domain.name

    //验证用户名

        env.put( Context.SECURITY_PRINCIPAL, email );

    //验证密碼

        env.put( Context.SECURITY_CREDENTIALS, password );  

        String autheStr="";

        try {

          ctx = new InitialDirContext( env );

          logged = true;

        } catch( AuthenticationException authe ) {

          // 授权失败

          logged = false;

          autheStr=authe.toString();

          System.out.println(autheStr);

        } catch( Exception e ) {

          // 不明错误

          e.printStackTrace();

              logged = false;

        } finally {

          try {

            // 把目录关闭

            ctx.close();

          } catch ( Exception Ignore ) {  logged = false;}

    }   

    //验证返回结果

    String returnint="failure";

        if (logged) {

                       returnint="success"; //成功

             }

        if (autheStr.indexOf("data 525")>=0) {

                 returnint="notuser";//用户不存在

             }

        if (autheStr.indexOf("data 52e")>=0) {

                 returnint="passerror";//密码错误

             }

        return returnint;

      } 

      }


    最新回复(0)