2012-01-05 87 views
2

我有以下問題:如果用戶的Active Directory密碼包含'&',用戶將無法登錄到我們的Web應用程序。 我在我的本地機器上使用端口轉發到有問題的LDAP服務器進行調試,並且一切正常。 但是,如果我在遠程服務器上使用該密碼登錄,則會失敗。 我已經發布了下面的ldap配置轉儲。 此外,我們使用簡單的文本的身份驗證(!) 任何想法都會受到歡迎,因爲我剛剛從好想法。LDAP在密碼中使用'&'失敗。失敗並不一致,但

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

supportedLDAPVersion:3,2

服務器名稱:CN = ABCDC03,CN =服務器,CN =富城,CN =站點,CN =配置,DC = FOO ,DC = COM

中supportedSASLMechanisms:GSSAPI,GSS-SPNEGO,EXTERNAL DIGEST-MD5

ldapServiceName:foo.com:[email protected]

namingContexts: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 = ForestDnsZones,DC = FOO,DC = COM

domainControllerFunctionality:3

supportedLDAPPolicies:MaxPoolThreads,MaxDatagramRecv,MaxReceiveBuffer,InitRecvTimeout,MaxConnections最大,MaxConnIdleTime,maxpagesize可,MaxQueryDuration,MaxTempTableSize,MaxResultSetSize,MaxNotificationPerConn,MaxValRange

forestFunctionality: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

supportedControl: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.11 3556.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

highestCommittedUSN:9122909

domainFunctionality:2

DNSHOSTNAME:ABCDC03.foo.com

currentTime:20120105081254。0Z

dsServiceName:CN = NTDS設置,CN = ABCDC03,CN =服務器,CN =富城,CN =站點,CN =配置,DC = FOO,DC = COM

isGlobalCatalogReady:TRUE

defaultNamingContext:DC = FOO,DC = COM

supportedCapabilities: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

+0

事實上,導致失敗的字符是&讓我想,也許在你使用它來編寫一個URL的一些密碼......只是說,LDAP不是我的強項,但我覺得它可疑 – SJuan76 2012-01-05 12:39:51

+0

難道問題是密碼Strign帶有URL編碼(假設你以某種形式輸入)?純粹的猜測 – 2012-01-05 12:53:57

回答

1

我認爲這個問題可能是通過webapp實際傳遞密碼。密碼字段可能需要消毒,因爲它包含一個&符號,它可能是代碼中某個特殊字符(不知道您的不同代碼塊可能寫入或不寫入哪種語言)。我有一個類似問題的例子,我在Word中寫了一些語句來粘貼到Oracle中,但是我意外地在Word中使用了TAB,這在Oracle中打破了一切。