Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> LDAP, Не могу получить атрибут 
:(
    Опции темы
Zzz
Дата 6.9.2007, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 306
Регистрация: 21.2.2003
Где: Мурманск

Репутация: нет
Всего: 5



Доброго времени суток!
Задача: получить аттрибут fullname у пользователя eDirectory (Novell) через LDAP! 
Использую NDK (Novell Development Kit)

Код

import com.novell.ldap.*;
import java.io.UnsupportedEncodingException;
import java.util.*;
import java.security.Security;


public class VerifyPassword
{
    public static void main( String[] args ) 
    {        
        int ldapPort = 635;
        int ldapVersion = LDAPConnection.LDAP_V3;
        String ldapHost = "localhost";
        String loginDN = "";
        String password = "";        
        String objectDN = "cn=Test,o=admins";
        String testPassword = "test";
        String path = "C:/sslkey.keystore";

        LDAPSocketFactory ssf;
        String attributeName, attrValue;
        Iterator allAttributes;
        Enumeration allValues;
        LDAPAttribute attribute;
        LDAPAttributeSet attributeSet;
        
        Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
        System.setProperty("javax.net.ssl.trustStore", path);
        ssf = new LDAPJSSESecureSocketFactory();
        LDAPConnection.setSocketFactory(ssf);

        LDAPConnection lc = new LDAPConnection();

        try {
            lc.connect( ldapHost, ldapPort );
            lc.bind( ldapVersion, loginDN, password.getBytes("UTF8") );

          /*  LDAPAttribute attr = new LDAPAttribute("userPassword", testPassword );
            boolean correct = lc.compare(objectDN, attr);

            System.out.println(correct ? "The password is correct.":
                                         "The password is incorrect.\n");          */
            
            LDAPEntry entry = lc.read(objectDN);           
             
            attributeSet = entry.getAttributeSet();
            allAttributes = attributeSet.iterator();

            attribute = (LDAPAttribute) allAttributes.next();
            attributeName = attribute.getName();
            allValues = attribute.getStringValues();
            attrValue = (String) allValues.nextElement();            
          
            lc.disconnect();
        }
        catch( LDAPException e ) {
            if ( e.getResultCode() == LDAPException.NO_SUCH_OBJECT ) {
                System.err.println( "Error: No such entry" );
            } else if ( e.getResultCode() == 
                                        LDAPException.NO_SUCH_ATTRIBUTE ) {
                System.err.println( "Error: No such attribute" );
            } else {
                System.err.println( "Error: " + e.toString() );
            }        
        }
        catch( UnsupportedEncodingException e ) {
            System.out.println( "Error: " + e.toString() );
        }       
        System.exit(0);
    }
}


И хотя заполнены все поля в пропертисах у пользователя, но возвращает только те 7 что на рисунке ниже! Как добыть все? 
Используя ActiveX из того же NDK в C++Buildere это поле возвращается.

Почему так? Есть мысли?


Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  Value.JPG 11,54 Kb


--------------------
Бесполезной громоздкой надстройкой является Windows от Майкрософт. Она занимает 1Мб памяти диска и рассчитана на использование устройства типа мышь.

"ЭВМ в инженерной практике" М. 1989г.
PM MAIL ICQ   Вверх
Zzz
Дата 7.9.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 306
Регистрация: 21.2.2003
Где: Мурманск

Репутация: нет
Всего: 5



UP!

Может быть есть у кого пример получения аттрибута fullname по другому, не через NDK?  smile 




--------------------
Бесполезной громоздкой надстройкой является Windows от Майкрософт. Она занимает 1Мб памяти диска и рассчитана на использование устройства типа мышь.

"ЭВМ в инженерной практике" М. 1989г.
PM MAIL ICQ   Вверх
DEER
Дата 8.9.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 749
Регистрация: 12.4.2005
Где: г. Рязань

Репутация: нет
Всего: 13



Не знаю поможет тебе или нет,
я когда с ldap работал исп такой код
Код

            LDAPConnectionBean bean = Utils.getLDAP_CONNECTION();

            log.error("bean=" + bean);
            log.error("env.put(Context.SECURITY_AUTHENTICATION, bean.getAuthentication()); = env.put(" + Context.SECURITY_AUTHENTICATION + ", " + bean.getAuthentication() + ");");

            env.put(Context.SECURITY_AUTHENTICATION, bean.getAuthentication());

            env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
            env.put(Context.PROVIDER_URL, bean.getUrl());
            env.put(Context.SECURITY_PRINCIPAL,  bean.getPrincipal().replace("@uid@", username));
            env.put(Context.SECURITY_CREDENTIALS, credentials);

            ctx = new InitialDirContext(env);
            
            ctx.close();

вот... у ctx есть методы получения атрибутов и т.п.
LDAPConnectionBean - просто беан для хранения параметров подключения
Код

public class LDAPConnectionBean {
    private String url;
    private String principal;
    private String authentication;

    public String getAuthentication() {
        return authentication;
    }

    public void setAuthentication(String authentication) {
        this.authentication = authentication;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getPrincipal() {
        return principal;
    }

    public void setPrincipal(String principal) {
        this.principal = principal;
    }
}




--------------------
 
PM MAIL WWW ICQ MSN   Вверх
Zzz
Дата 10.9.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 306
Регистрация: 21.2.2003
Где: Мурманск

Репутация: нет
Всего: 5



Спасибо, надо глянуть!


--------------------
Бесполезной громоздкой надстройкой является Windows от Майкрософт. Она занимает 1Мб памяти диска и рассчитана на использование устройства типа мышь.

"ЭВМ в инженерной практике" М. 1989г.
PM MAIL ICQ   Вверх
Zzz
Дата 17.9.2007, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 306
Регистрация: 21.2.2003
Где: Мурманск

Репутация: нет
Всего: 5



Код

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

class Getattrs {

public static void main(String[] args) {

    Hashtable env = new Hashtable(15, 0.75f);

    env.put(Context.INITIAL_CONTEXT_FACTORY, Env.INITCTX);

    env.put(Context.PROVIDER_URL, Env.MY_SERVICE);

    try {

        DirContext ctx = new InitialDirContext(env);

        Attributes result = ctx.getAttributes(Env.ENTRYDN);

        if (result == null) {
            System.out.println(Env.ENTRYDN + 
                               "has none of the specified attributes.");
        } else {
            attr = result.get("fullName");
            if (attr != null) {
                System.out.println("FullName: " );
                for (NamingEnumeration vals = attr.getAll();
                     vals.hasMoreElements();
                     System.out.println("\t" + vals.nextElement()))
                    ;
            }
        }
    } catch (NamingException e) {
        System.err.println("Getattrs example failed.");
        e.printStackTrace();
    }
}
}


Попробовал вот такой код из примера. Все равно получаю тот же список атрибутов Атрибута FullName  все так же нет :( 


--------------------
Бесполезной громоздкой надстройкой является Windows от Майкрософт. Она занимает 1Мб памяти диска и рассчитана на использование устройства типа мышь.

"ЭВМ в инженерной практике" М. 1989г.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0992 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.