2016-04-03 50 views
0

我遇到了一個完整的謎。我有一個基於Spring的Web應用程序,它根據Active Directory對用戶進行身份驗證。在一個只有一臺服務器(PROD,還有什麼地方,對吧?),它無法調取用戶信息:彈簧安全 - 活動目錄返回49 - 775(用戶帳戶鎖定)的有效(解鎖)用戶

產生的原因:javax.naming.AuthenticationException:LDAP:錯誤代碼49 - 80090308:LdapErr :DSID-0C0903A9,註釋:AcceptSecurityContext錯誤,數據775,v1db1 \ X00]在 com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3087)

這顯然不是一個帳戶問題,儘管它看起來像一個。我使用我自己的憑據,他們爲桌面登錄(SSO)以及在不同環境中運行的此應用程序的所有其他實例工作。對於我所知道的,Spring AD的配置也是合適的:

<bean id="authProvider" class="org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider"> 
<constructor-arg value="${ldap.domain}" /> 
<constructor-arg value="${ldap.providerUrl}" /> 
<constructor-arg value="${ldap.rootDn}" /> 
<property name="authoritiesMapper" ref="authMapper"/> 
</bean> 

<bean id="authMapper" class="ca.myapp.spring.UserContextMapper"> 
<property name="adminGroupsAsString" value="${ldap.adminGroups}"/> 
<property name="userGroupsAsString" value="${ldap.userGroups}"/> 
</bean> 

對我來說,看起來問題就出在那個單獨的盒子上。任何人在過去看過這種行爲?任何幫助是極大的讚賞。

我甚至最終使用來自PROD的相同ISO映像構建VM,以驗證是否可以重現錯誤。它的作用就像魅力 - 我可以登錄,並且沒有認證例外......看起來就像是一個特定的盒子(PROD),我爲有效(未鎖定)的用戶獲取「用戶鎖定」錯誤。

下面是版本信息,如果需要的話: RHEL 6.3 的Tomcat 6 的Java 09年7月1日 春季安全4.0.3.RELEASE

回答

0

解決方案被證明是很容易的。這不是一個技術問題,而是一個人的問題。在部署之前,WAR文件中的spring上下文被修改爲由匿名的善意者指向Active Directory的測試版本。屬性文件是相同的,指向刺AD,但上下文配置XML本身已被改變...有人有一個很好的幽默感....