private void bind(LDAPConnection conn, String dn, String pw) throws LDAPException { if (M_log.isDebugEnabled()) { M_log.debug("bind(): binding [dn = " + dn + "]"); } try { conn.bind(LDAPConnection.LDAP_V3, dn, pw.getBytes("UTF8")); } catch (UnsupportedEncodingException e) { throw new RuntimeException("Failed to encode user password", e); } }
public boolean checkLdapLoginCredential(String userName, String userPassword) throws Exception { LDAPConnection lc = new LDAPConnection(); int ldapVersion = LDAPConnection.LDAP_V3; boolean ritorno = false; try { // check for required data if (isNullValue(ApplicationConfigurator.HOST) || (isNullValue(ApplicationConfigurator.PORT) && isNullValue(ApplicationConfigurator.PORT_SSL)) /* || isNullValue(ApplicationConfigurator.SEARCH_PATH) || isNullValue(ApplicationConfigurator.USER_DN_ATTRIBUTE_NAME) */ ) { throw new Exception("Dati obbligatori per la connessione ad LDAP non presenti."); } // Connect to the server try { lc.connect(ApplicationConfigurator.HOST, Integer.parseInt(ApplicationConfigurator.PORT)); } catch (Exception e) { e.printStackTrace(); throw e; } // Try login with user credential try { if (isNullValue(userName) || isNullValue(userPassword)) return false; userName = isNullValue(ApplicationConfigurator.USER_DN_ATTRIBUTE_NAME) ? userName : ApplicationConfigurator.USER_DN_ATTRIBUTE_NAME + "=" + userName; userName += isNullValue(ApplicationConfigurator.SEARCH_PATH) ? "" : "," + ApplicationConfigurator.SEARCH_PATH; lc.bind(ldapVersion, userName, userPassword); } catch (Exception e) { // Se si verifica un eccezione in questo punto significa che l'utente non è stato // trovato, per questo motivo risollevo l'eccezione con il messaggio standard di // utente e/o password errati. e.printStackTrace(); throw new Exception(ApplicationConfigurator.LanguageManager.getString("LDAP.Msg4")); } ritorno = true; } finally { // disconnect with the server lc.disconnect(); return ritorno; } }
/** * Performs a simple bind. * * @param request to bind with * @return bind response * @throws LdapException if an error occurs */ protected Response<Void> simpleBind(final BindRequest request) throws LdapException { Response<Void> response = null; try { final LDAPResponseQueue queue = connection.bind( LDAPConnection.LDAP_V3, request.getDn(), request.getCredential().getBytes(), (LDAPResponseQueue) null, getLDAPConstraints(request)); final LDAPResponse lr = (LDAPResponse) queue.getResponse(); response = createResponse(request, null, lr); } catch (LDAPException e) { processLDAPException(e); } return response; }
/** * Performs an anonymous bind. * * @param request to bind with * @return bind response * @throws LdapException if an error occurs */ protected Response<Void> anonymousBind(final BindRequest request) throws LdapException { Response<Void> response = null; try { final LDAPResponseQueue queue = connection.bind( LDAPConnection.LDAP_V3, (String) null, (byte[]) null, (LDAPResponseQueue) null, getLDAPConstraints(request)); final LDAPResponse lr = (LDAPResponse) queue.getResponse(); response = createResponse(request, null, lr); } catch (LDAPException e) { processLDAPException(e); } return response; }
public static void main(String[] args) { String ldapHost = "192.168.121.130"; String loginDN = "cn=admin,dc=ucweb,dc=com"; String password = "******"; String containerName = "dc=ucweb,dc=com"; int ldapPort = LDAPConnection.DEFAULT_SSL_PORT; int ldapVersion = LDAPConnection.LDAP_V3; LDAPJSSESecureSocketFactory ssf = new LDAPJSSESecureSocketFactory(TrustManager.createSSLSocketFactory()); LDAPConnection lc = new LDAPConnection(ssf); LDAPAttributeSet attributeSet = new LDAPAttributeSet(); attributeSet.add( new LDAPAttribute("objectclass", new String[] {new String("top"), new String("person")})); attributeSet.add(new LDAPAttribute("cn", "17")); attributeSet.add(new LDAPAttribute("sn", "17")); attributeSet.add(new LDAPAttribute("description", " ")); // attributeSet.add(new LDAPAttribute("userPassword", "111111")); String dn = "cn=17," + containerName; LDAPEntry newEntry = new LDAPEntry(dn, attributeSet); try { lc.connect(ldapHost, ldapPort); lc.bind(ldapVersion, loginDN, password.getBytes("UTF8")); System.out.println("login ldap server successfully."); lc.add(newEntry); System.out.println("Added object: " + dn + " successfully."); } catch (LDAPException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } finally { try { if (lc.isConnected()) { lc.disconnect(); } } catch (Exception e) { e.printStackTrace(); } } }
/** * Performs a sasl bind. * * @param request to bind with * @return bind response * @throws LdapException if an error occurs */ protected Response<Void> saslBind(final BindRequest request) throws LdapException { try { final SaslConfig sc = request.getSaslConfig(); switch (sc.getMechanism()) { case EXTERNAL: throw new UnsupportedOperationException("SASL External not supported"); /* current implementation appears to be broken * see http://tinyurl.com/7ojdzlz * connection.bind( * (String) null, * sc.getAuthorizationId(), * new String[] {"EXTERNAL"}, * null, * (Object) null); * break; */ case DIGEST_MD5: connection.bind( (String) null, request.getDn(), new String[] {"DIGEST-MD5"}, null, new SaslCallbackHandler( null, request.getCredential() != null ? request.getCredential().getString() : null)); break; case CRAM_MD5: throw new UnsupportedOperationException("CRAM-MD5 not supported"); case GSSAPI: throw new UnsupportedOperationException("GSSAPI not supported"); default: throw new IllegalArgumentException( "Unknown SASL authentication mechanism: " + sc.getMechanism()); } } catch (LDAPException e) { processLDAPException(e); } return new Response<Void>(null, ResultCode.SUCCESS); }
public LDAPUser login(String aUserName, String aPassword) throws InvalidLoginException { LDAPUser onlineUser = null; try { connection.connect(ldapHost, ldapPort); System.out.println("Connect Successfull"); System.out.println(aUserName); LDAPSearchQueue searchResults = connection.search( "o=Aerothai", LDAPConnection.SCOPE_SUB, "cn=" + aUserName, new String[] {LDAPConnection.NO_ATTRS}, true, (LDAPSearchQueue) null); LDAPMessage message; message = searchResults.getResponse(); if (message instanceof LDAPSearchResult) { LDAPEntry entry = ((LDAPSearchResult) message).getEntry(); String dn = entry.getDN(); String[] userDn = dn.split(","); String fullDn = userDn[0] + "," + userDn[1] + "," + userDn[2] + ",o=Aerothai"; connection.bind(ldapVersion, fullDn, aPassword.getBytes("UTF8")); System.out.println("Bind Successfull"); onlineUser = new LDAPUser(); try { onlineUser.setFirstName((String) getAttribute(fullDn, "givenName").elementAt(0)); onlineUser.setLastName((String) getAttribute(fullDn, "sn").elementAt(0)); try { Integer.parseInt((String) getAttribute(fullDn, "cn").elementAt(1)); onlineUser.setEmployeeCode((String) getAttribute(fullDn, "cn").elementAt(1)); } catch (NumberFormatException e) { onlineUser.setEmployeeCode((String) getAttribute(fullDn, "cn").elementAt(0)); } onlineUser.setDepartment((String) getAttribute(fullDn, "ou").elementAt(0)); onlineUser.setLocation((userDn[2].split("="))[1]); } catch (ArrayIndexOutOfBoundsException e1) { e1.printStackTrace(); onlineUser = null; throw new InvalidLoginException( "à¡Ô´¤ÇÒÁ¼Ô´¾ÅÒ´ÃÐËÇèÒ§¡Òô֧¢éÍÁÙÅ ¡ÃØ³Ò Login ãËÁèÍÕ¡¤ÃÑé§"); } } else { disconnect(); throw new InvalidLoginException( "äÁ辺¼Ùéãªé§Ò¹ª×èÍ " + aUserName + " ¡ÃسÒÅͧÍÕ¡¤ÃÑé§ ËÃ×Í µÔ´µèÍà¨éÒ˹éÒ·Õè¡Í§Ç¤.¾Ç. à¾×è͵ÃǨÊͺ¢éÍÁÙŢͧ·èÒ¹"); } disconnect(); } catch (LDAPException e) { e.printStackTrace(); throw new InvalidLoginException( "ÃËÑʼèÒ¹äÁè¶Ù¡µéͧ ¡ÃسÒÅͧÍÕ¡¤ÃÑé§ ËÃ×Í µÔ´µèÍà¨éÒ˹éÒ·Õè¡Í§Ç¤.¾Ç. à¾×è͵ÃǨÊͺ¢éÍÁÙŢͧ·èÒ¹"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); throw new InvalidLoginException(e); } finally { disconnect(); } return onlineUser; }