2013-07-25 4 views
0

Я новичок в аутентификации LDAP. Я хочу, чтобы аутентифицировать пользователей с их учетными данными LDAP. Для этого я получил учетные данные приложения с сервера, чтобы я мог аутентифицировать других пользователей.LDAP-аутентификация пользователя по заявке пользователя

Мои учетные данные в качестве пользователя приложения имеют:

Test LDAP Server IP: xx.xx.xx.xx 
Port: 389 
Bind DN:uid=uidxx,ou=applications,dc=dcxx 
password: passxx 

Для аутентификации этого пользователя, я написал код, как

public String ldap() 
{ 
     String value=null; 
     SearchControls constraints= new SearchControls(); 
     Hashtable<String, String> env= new Hashtable<String, String>(); 
     env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory"); 
     env.put(Context.PROVIDER_URL,"ldap://xx.xx.xx.xx:389"); 
     env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
     env.put(Context.SECURITY_PRINCIPAL,"uid=uidxx, ou=applications, dc=dcxx"); 
     env.put(Context.SECURITY_CREDENTIALS,"passxx"); 

     try { 
      DirContext ctx = new InitialDirContext(env); 
      value = "Done with it"; 

     } 
     catch(AuthenticationException e) 
     { 
      value = "Invalid User name or password"; 
     } 
     catch (NamingException e) { 
      e.printStackTrace(); 
      value = "Exception occurred"; 

     } 

     return value; 
    } 

я получил возвращаемое значение, как "Done with it"

Сейчас я хотите аутентифицировать другого пользователя, чей почтовый идентификатор и пароль мне известны. Его, как я хочу, чтобы аутентифицировать других пользователей, используя их mailid, пароль, и для этого я получил uidxx и passxx для их аутентификации. Как мне это сделать?

Не получить большую помощь из других источников.

Спасибо

ответ

0

При проверке подлинности против LDAP общего потока работы является

  1. Привязка к LDAP с помощью учетных данных у вас есть. Этот пользователь должен иметь как минимум доступ только для чтения к поддереву с пользователями. Часто это ou = People, ou = Domain, dc = com или подобное.
  2. сервер запросов LDAP для пользователя DN (здесь, где ANR может быть полезным)
  3. Попробуйте привязать к LDAP, используя DN и пароль пользователя, прилагаемому к приложению

Это работает, потому что очень часто, чтобы дать каждый пользователь имеет права RW на свой объект в базе данных. Очень полезно, если вы хотите, чтобы пользователь мог изменить свой собственный пароль.

+0

спасибо tomas789. У меня есть только доступ к серверу базы данных. Мои учетные данные: uidxx, passxx и приложения, как указано в вопросе. Теперь эти учетные данные предназначены для аутентификации меня, чтобы ican аутентифицировал других пользователей с их идентификатором и паролем. Я получаю успех в аутентификации меня по вышеуказанному коду. Теперь я хочу аутентифицировать других в своем приложении. Как мне это сделать? –

+1

@Optimus Я уверен, что я ответил на это. На шаге 1, как я упоминал выше, вы связываетесь с помощью ВАШИХ учетных данных, а на шаге 3 вы связываете с использованием учетных данных USER. Если ему удалось предоставить пользователю действительные учетные данные, в противном случае он этого не сделал. Шаги 1 и 2 необходимы только для получения DN пользователя (а не вашего), если вы уже знаете это, вы можете сразу перейти к шагу 3 (это не очень часто бывает особенно, когда пользователь отправляет адрес электронной почты или имя или что-то вроде этого) – tomas789

Смежные вопросы