我遇到以下问题:如果用户的Active Directory密码包含“&”,则该用户无法登录到我们的Web应用程序。
我已使用转发到有问题的LDAP服务器的端口在本地计算机上对此进行了调试,并且一切正常。
但是,如果我使用该密码在远程服务器上登录,则会失败。
我在下面发布了ldap配置的转储。
另外,我们使用简单的文本作为auth(!)
任何想法都会受到欢迎,因为我对好的想法一无所知。

    Hashtable<String, String> environment = new Hashtable<String, String>();
        environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        environment.put(Context.SECURITY_AUTHENTICATION, "simple");
        environment.put(Context.SECURITY_PRINCIPAL, domainBasedUsername);
        environment.put(Context.SECURITY_CREDENTIALS, password);
        environment.put(Context.PROVIDER_URL, getActiveDirectoryServerUrl())


isSynchronized:TRUE

支持的LDAP版本:3、2

serverName:CN = ABCDC03,CN =服务器,CN = Foo-City,CN =站点,CN =配置,DC = foo,DC = com

支持的SASLM机制:GSSAPI,GSS-SPNEGO,EXTERNAL,DIGEST-MD5

ldapServiceName:foo.com:[email protected]

命名上下文:DC = foo,DC = com,CN = Configuration,DC = foo,DC = com,CN = Schema,CN = Configuration,DC = foo,DC = com,DC = DomainDnsZones,DC = foo,DC = com, DC =森林DnsZones,DC = foo,DC = com

domainController功能:3

支持的LDAPPolicies:MaxPoolThreads,MaxDatagramRecv,MaxReceiveBuffer,InitRecvTimeout,MaxConnections,MaxConnIdleTime,MaxPageSize,MaxQueryDuration,MaxTempTableSize,MaxResultSetSize,MaxNotificationPerConn,MaxValRange

森林功能:2

configurationNamingContext:CN =配置,DC = foo,DC = com

rootDomainNamingContext:DC = foo,DC = com

SchemaNamingContext:CN =架构,CN =配置,DC = foo,DC = com

subschemaSubentry:CN =聚合,CN =架构,CN =配置,DC = foo,DC = com

支持的控件:1.2.840.113556.1.4.319、1.2.840.113556.1.4.801、1.2.840.113556.1.4.473、1.2.840.113556.1.4.528、1.2.840.113556.1.4.417、1.2.840.113556.1.4.619, 1.2.840.113556.1.4.841、1.2.840.113556.1.4.529、1.2.840.113556.1.4.805、1.2.840.113556.1.4.521、1.2.840.113556.1.4.970、1.2.840.113556.1.4.1338、1.2。 840.113556.1.4.474、1.2.840.113556.1.4.1339、1.2.840.113556.1.4.1340、1.2.840.113556.1.4.1413、2.16.840.1.113730.3.4.9、2.16.840.1.113730.3.4.10、1.2.840.113556。 1.4.1504、1.2.840.113556.1.4.1852、1.2.840.113556.1.4.802、1.2.840.113556.1.4.1907、1.2.840.113556.1.4.1948、1.2.840.113556.1.4.1974、1.2.840.113556.1.4。 1341,1.2.840.113556.1.4.2026

最高委员会编号:9122909

域功能:2

dnsHostName:ABCDC03.foo.com

当前时间:20120105081254.0Z

dsServiceName:CN = NTDS设置,CN = ABCDC03,CN =服务器,CN = Foo-City,CN =站点,CN =配置,DC = foo,DC = com

isGlobalCatalogReady:TRUE

defaultNamingContext:DC = foo,DC = com

支持的功能:1.2.840.113556.1.4.800、1.2.840.113556.1.4.1670、1.2.840.113556.1.4.1791、1.2.840.113556.1.4.1935

最佳答案

我认为问题可能是通过网络应用程序实际传递的密码。密码字段可能需要清理,因为它包含“与”号,在您的代码中的某个位置它可能是一个特殊字符(不确定您的不同代码段可能会或可能不会写入哪种语言)。我遇到的一个类似问题的一个例子是,我用Word编写了要粘贴到Oracle中的语句,但是我不小心在Word中使用了TAB,这破坏了Oracle中的所有功能。

关于java - LDAP在密码中使用“&”失败。失败并不一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8742578/

10-10 01:11