Какой простой способ проверить учетные данные для входа в LDAP в локальной системе Solaris - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть приложение, которое должно выполнять некоторые функции, только если у пользователя есть учетные данные, которые могут войти в локальную (Solaris) систему.Мне просто нужен быстрый способ проверить учетные данные.Это не работает.Он просто выполняется без ошибок и без распечатки.

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://hostname"); 
env.put(Context.SECURITY_AUTHENTICATION, "simple");
LdapContext ldapContext;

Hashtable<String, String> environment = new Hashtable<String, String>(env); 
environment.put(Context.SECURITY_PRINCIPAL, "username");
environment.put(Context.SECURITY_CREDENTIALS, "");
DirContext context;
try {
    context = LdapCtxFactory.getLdapCtxInstance("ldap://HOSTNAME", environment);
    System.out.println("Seccess");
} catch (NamingException ex) {
    System.out.println("Authentication failed: " + ex);
    Logger.getLogger(FAMENewReader.class.getName()).log(Level.SEVERE, null, ex);
}   

1 Ответ

0 голосов
/ 30 сентября 2019

В конце концов это сработало.Обратите внимание на использование doman \ username вместо просто username.

    Hashtable<String, String> env = new Hashtable<>();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
    env.put(Context.PROVIDER_URL, "ldap://xxx.xxx.xxx.xx"); 
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, "domain\\username");
    env.put(Context.SECURITY_CREDENTIALS, "passwd");
    try {
        DirContext ctx = new InitialDirContext(env);
        System.out.println("Success");
    } catch (Throwable ex) {
        System.out.println("Authentication failed: " + ex);
    }   
...