Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Authentification over LDAP


Автор: jxr 7.1.2009, 08:57
У меня веб проект... хочу логин сделать через LDAP.
username & password  on LDAP


Минимум код который я нашел в гуугле!
Код


            Hashtable authEnv = new Hashtable();
            String userName = "";
            String passWord = "";

            InputStreamReader converter = new InputStreamReader(System.in);
            BufferedReader in = new BufferedReader(converter);
            System.out.println("Input your username:");
            userName = in.readLine();
            System.out.println("Input your password:");
            passWord = in.readLine();            


            base = userName + "@" + "xxxyyyzzz.com";
            String ldapURL = "ldap://192.168.0.99:389/";

            authEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
            authEnv.put(Context.PROVIDER_URL, ldapURL);
            authEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
            authEnv.put(Context.SECURITY_PRINCIPAL, base);
            authEnv.put(Context.SECURITY_CREDENTIALS, passWord);

            try {
                DirContext authContext = new InitialDirContext(authEnv);
                System.out.println("Authentication Success!");                
            }

            catch (AuthenticationException authEx)
            {
                System.out.println("Authentication failed!");
            }
            catch (NamingException namEx) {
                System.out.println("Something went wrong!");
                namEx.printStackTrace();
            }



Этот код не работаеть когда набираю правильные (username & password)
Код

javax.naming.AuthenticationException: 
[LDAP: error code 49 - 80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 525, vece]


Но когда набираю правильный username, а password пустым (password="") то...
Код

Authentication Success!

В этом случае как получить password у этого юзера (username) ?

Автор: jxr 7.1.2009, 11:42
Цитата

Но когда набираю правильный username, а password пустым (password="") то...

Думаю, при этом происходить anonymous authentification!

Добавлено @ 11:45
Web Application - in first leg,  every user in our domain must be log-in in application! (username & password)
I want to use authentification over LDAP. 
Please, help me.

Добавлено @ 11:48
http://www.codeproject.com/KB/system/arbauthentication.aspx
There is example in .NET (C#), and work perfectly!
Java example as it...

Автор: VSergeyV 8.1.2009, 10:02
Цитата(jxr @  7.1.2009,  08:57 Найти цитируемый пост)
Этот код не работаеть когда набираю правильные (username & password)

Попробуйте использовать их для входа через Softerra LDAP Administrator, ну или аналог тулзы

Цитата(jxr @  7.1.2009,  11:42 Найти цитируемый пост)
Думаю, при этом происходить anonymous authentification!

Ога

Цитата(jxr @  7.1.2009,  08:57 Найти цитируемый пост)
В этом случае как получить password у этого юзера (username) ?

Цитата(jxr @  7.1.2009,  08:57 Найти цитируемый пост)
У меня веб проект... хочу логин сделать через LDAP.

Зачем получать password у этого юзера?
У меня стояла аналогичная задача, только проект был под Grails я скачал плагин к нему для работы с LDAP и обнаружил там странную вещь - логин через LDAP был сделан следующим образом - сначала происходило подключение к LDAP под неким служебным юзером, затем организовывался поиск юзеров по логину что был введен, находился юзер и затем уже только его пассворд сравнивался с пассвордом тем что был введен, я переделал под следующее - введеные логин и пассворд используются для подключения к LDAP - вопрос правильно ли я сделал что переделал? Зачем авторы плагина изначально сделали такой финт?

Автор: sandello 11.1.2009, 12:04
Может более правильным было бы использовать то, что предоставляет контейнер? Кстати, ты какой используешь?
На сколько я знаю, и Jetty, и Tomcat интегрированы с JAAS'ом. Тогда твоя задача - описать необходимость аутенфикации и авторизации в web.xml и правильно настроить контейнер. В этом случае, твое приложение будет независимо от способа аутенфикации/авторизации.

Добавлено через 9 минут и 36 секунд
У меня есть примеры для JbossWeb

Автор: MisterCleric 12.1.2009, 10:29
Цитата

У меня есть примеры для JbossWeb 


а можно этот пример?

Автор: AcetoN 14.9.2012, 09:43
Есть веб-приложение на JAVA. Может ли сервер узнать учетную запись windows на том компьютере, с которого производится вход в приложение?

Автор: LSD 14.9.2012, 11:23
Цитата(AcetoN @  14.9.2012,  10:43 Найти цитируемый пост)
Есть веб-приложение на JAVA. Может ли сервер узнать учетную запись windows на том компьютере, с которого производится вход в приложение?

Универсального способа - нет. Есть хаки для браузера которые позволяют получить имя пользователя. Можно так же написать апплет, который будет получать имя пользователя, но его придется подписать.

Автор: AcetoN 17.9.2012, 16:36
Цитата(LSD @  14.9.2012,  11:23 Найти цитируемый пост)
 Универсального способа - нет. Есть хаки для браузера которые позволяют получить имя пользователя. Можно так же написать апплет, который будет получать имя пользователя, но его придется подписать. 

Ясно, а как насчет обращения сервер приложения сразу к домен-контроллеру с просьбой предоставить учетку, которая залогинена на запрашиваемом компьютере?

Автор: LSD 17.9.2012, 16:50
Цитата(AcetoN @  17.9.2012,  17:36 Найти цитируемый пост)
а как насчет обращения сервер приложения сразу к домен-контроллеру с просьбой предоставить учетку, которая залогинена на запрашиваемом компьютере?

Я не в курсе какое API предоставляет контроллер домена. Это надо смотреть AD API на предмет выяснения, есть ли там такое API и тогда уже можно думать как его вызвать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)