2011-04-08 73 views
0

我們有一個使用Spring Security進行LDAP身份驗證的自定義Grails應用程序。用戶DN包含逗號(例如「CN = Smith \,John,CN = Users,DC = example,DC = com」),但是我們的管理員用戶的DN不包含(例如,「CN = peadmin,CN = Users,DC =實施例,DC = COM「)。當我從本質上是Tomcat的Grails服務器運行應用程序時,一切正常。當我構建WAR並部署到WebSphere AS 7時,我只能以管理員用戶身份登錄。在我們的日誌中的異常抱怨一個意外的逗號,它表示應用程序在WAS上運行時沒有正確解析/轉義DN。Websphere LDAP Spring Security解析錯誤

升級到Spring Security的3.0.4之後,這裏是具體的異常信息,我們得到:

2011-04-07 20:58:41975 [Web容器:0]錯誤controller.LoginController - org.springframework。 security.authentication.AuthenticationServiceException:解析DN失敗;嵌套的例外是org.springframework.ldap.core.ParseException:遇到「」第1行,列20 期待: ...

回答

0

首先,你是在玩火。從來沒有將DN作爲任何事物的基礎,因爲它不是用戶的穩定屬性。即時即時破壞。移動樹中的用戶。有了AD,你應該使用samAccountName和TDS(以及其餘大部分)uid。這不會導致你目前的問題,但如果這是一個真實的應用程序,你希望繼續工作,請開始改變的事情,否則你會後悔。其次,如果你堅持在LDAP查詢中使用帶有逗號的特殊字符,你應該按照RFC 2254來轉義它。當Tomcat返回用戶時,它會爲你做這件事,而不是。

相關問題