2009-07-30 3 views
1

Возможность выполнить пользовательскую аутентификацию ldap для внешних полномочий db. Но когда я пытаюсь проверить неправильный пароль отказ URL аутентификации не отображается вместо мой браузер выводит исключение details.Below моя securitycontext.xml и исключение Дано:Неверные учетные данные Ldap, не загружающие ошибку аутентификации Ошибка

<http auto-config="false" access-decision-manager-ref="accessDecisionManager" access-denied-page="/accessDenied.jsp"> 
    <!-- Restrict access to ALL other pages --> 
    <intercept-url pattern="/index.jsp" filters="none" /> 
    <!-- Don't set any role restrictions on login.jsp --> 
    <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
    <intercept-url pattern="/service/**" access="PRIV_Report User, PRIV_305" /> 

    <logout logout-success-url="/index.jsp" /> 
    <form-login authentication-failure-url="/index.jsp?error=1" default-target-url="/home.jsp" /> 
    <anonymous/> 
</http> 

<b:bean id="accessDecisionManager" class="org.springframework.security.vote.AffirmativeBased"> 
    <b:property name="decisionVoters"> 
     <b:list> 
      <b:ref bean="roleVoter" /> 
      <b:ref bean="authenticatedVoter" /> 
     </b:list> 
    </b:property> 
</b:bean> 

<b:bean id="roleVoter" class="org.springframework.security.vote.RoleVoter"> 
    <b:property name="rolePrefix" value="PRIV_" /> 
</b:bean> 
<b:bean id="authenticatedVoter" class="org.springframework.security.vote.AuthenticatedVoter"> 
</b:bean> 

<b:bean id="contextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource"> 
    <b:constructor-arg value="ldap://mydomain:389" /> 
</b:bean> 
<b:bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate"> 
    <b:constructor-arg ref="contextSource" /> 
</b:bean> 

<b:bean id="ldapAuthenticationProvider" 
     class="com.zo.sas.gwt.security.login.server.SASLdapAuthenticationProvider"> 
     <b:property name="authenticator" ref="ldapAuthenticator" /> 
     <custom-authentication-provider /> 
</b:bean> 

<b:bean id="ldapAuthenticator" 
     class="com.zo.sas.gwt.security.login.server.SASAuthenticator"> 
     <b:property name="contextSource" ref="contextSource" /> 
     <b:property name="userDnPatterns"> 
      <b:value>uid={0},OU=People</b:value> 
     </b:property> 
</b:bean> 

И мое исключение пиловочник:

 
org.springframework.ldap.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]; nested exception is javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials] 
    org.springframework.ldap.support.LdapUtils.convertLdapException(LdapUtils.java:180) 
    org.springframework.ldap.core.support.AbstractContextSource.createContext(AbstractContextSource.java:266) 
    org.springframework.ldap.core.support.AbstractContextSource.getContext(AbstractContextSource.java:106) 
    com.zo.sas.gwt.security.login.server.SASAuthenticator.authenticate(SASAuthenticator.java:55) 
    com.zo.sas.gwt.security.login.server.SASLdapAuthenticationProvider.authenticate(SASLdapAuthenticationProvider.java:45) 
    org.springframework.security.providers.ProviderManager.doAuthentication(ProviderManager.java:188) 
    org.springframework.security.AbstractAuthenticationManager.authenticate(AbstractAuthenticationManager.java:46) 
    org.springframework.security.ui.webapp.AuthenticationProcessingFilter.attemptAuthentication(AuthenticationProcessingFilter.java:82) 
    org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:258) 
    org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) 
    org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) 
    org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89) 
    org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) 
    org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) 
    org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235) 
    org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) 
    org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) 
    org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175) 
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:183) 
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:138) 

Это мой index.jsp

<html> 
<script type="text/javascript" language="javascript"> 
    var dictionary = { 
      loginErr: "${SPRING_SECURITY_LAST_EXCEPTION.message}", 
      error: "${param.error}" 
      }; 
</script> 

    <head> 
    </head> 
    <body > 
     <iframe src="javascript:''" id="__gwt_historyFrame" style="width:0;height:0;border:0"></iframe> 

     <script type="text/javascript" language="javascript" src="com.zo.sas.gwt.sasworkflow.home.Home.nocache.js"></script> 
    </body> 
</html> 

ответ

1

, что журнал не говорит много. Вы должны поставить org.springframework, чтобы зарегистрироваться на DEBUG уровне и посмотреть, что происходит.
Ищите эти сообщения: «Обновлен SecurityContextHolder, чтобы содержать нулевую аутентификацию» и «Ошибка аутентификации»:, после чего должна быть перенаправлена ​​index.jsp.
Что такое код index.jsp?

+0

Спасибо за ответ, но я не получаю это сообщение. И при неудаче мой url будет http: // localhost/sas/j_spring_security_check, который отображает с http status 500 и журнал ошибок, содержащий то, что я вставил ранее. – 2009-08-01 14:23:32

0

Это правильное сообщение об ошибке, код LDAP: код ошибки 49 - Недопустимые учетные данные, возможно, не тот формат, который вы хотели.

Сервер LDAP должен передать субкод по той причине, Active Directory имеет список:
AD LDAP 49 codes и eDirectory отправит обычно ошибку 669 для плохого пароля 601 для плохих DN. Хотя я думаю, что это изменилось в последних двух версиях, и все они отображаются как 669 ошибок в eDirectory, чтобы не помогать злоумышленникам определять реальные имена пользователей.

Смежные вопросы