AuthenticationNotSupportedException: DIGEST-MD5 в WebSphere - PullRequest
0 голосов
/ 18 ноября 2010

Я столкнулся с проблемой при попытке аутентификации из моих веб-сервисов.Вот код, который дает сбой.

private InitialDirContext callDirectory(String password,
            String usernameWithoutDomain) throws NamingException 
    {
        InitialDirContext ctx;
        Hashtable<String, String> env = new Hashtable<String, String>();

        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL, _ldapUrl ); 
        env.put(Context.SECURITY_AUTHENTICATION, "DIGEST-MD5"); 
        env.put(Context.SECURITY_PRINCIPAL, usernameWithoutDomain ); 
        env.put(Context.SECURITY_CREDENTIALS, password);  
        ctx = new InitialDirContext(env);
        return ctx;
    }

Этот код работает с Active Directory в AIX, используя IBM JVM 1.5, но не на той же машине с той же виртуальной машиной при запуске в WebSphere 6.1.

Я пытался контролировать все переменные, и до сих пор похоже, что WebSphere предотвращает аутентификацию DIGEST-MD5 LDAP.Есть идеи почему?

Вот трассировка стека:

javax.naming.AuthenticationNotSupportedException: DIGEST-MD5 
     at com.sun.jndi.ldap.sasl.LdapSasl.saslBind(LdapSasl.java:115) 
     at com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:229) 
     at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2652) 
     at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:298) 
     at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:190) 
     at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:208) 
     at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:151) 
     at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:81) 
     at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:679) 
     at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:259) 
     at javax.naming.InitialContext.init(InitialContext.java:235) 
     at javax.naming.InitialContext.<init>(InitialContext.java:209) 
     at security.ActiveDirectoryReader.openDirectoryContext(ActiveDirectoryReader.java:80)

1 Ответ

2 голосов
/ 28 декабря 2010

Чтобы другие могли извлечь из этого пользу: измените файл: /opt/IBM/WebSphere/AppServer/java/jre/lib/security/java.security выполните поиск для security.provider и добавьте строку внизу других провайдеров (если ее там еще нет): security.provider.X = com.ibm.security.sasl.IBMSASL (где X - следующее число в последовательности для строк над ним)

У нас была такая же проблема, даже открыли PMR с IBM (который до сих пор не знает, как исправить)

Ответ на самом деле пришел по собственной ссылке: http://www.ibm.com/developerworks/java/jdk/security/50/secguides/saslDocs/ibm.sasl.provider.guide.html

кажется, это должно быть "включено" по умолчанию ...

...