2009-08-14 16 views
17

Pozdrowienia!403 - Odmowa dostępu po uwierzytelnieniu

Kiedy próbuję uwierzytelniać się na istniejącym serwerze db, uzyskuję uwierzytelnienie, ale otrzymuję stronę 403. Jeśli po prostu wypróbowałem złe hasło, otrzymuję komunikat "nieprawidłowych poświadczeń" zgodnie z oczekiwaniami. Próbowałem uwierzytelniania na przykładowej aplikacji dołączonej do SpringSecurity i to działało dobrze.

bezpieczeństwem context.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans 
    xmlns="http://www.springframework.org/schema/security" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
     http://www.springframework.org/schema/security 
     http://www.springframework.org/schema/security/spring-security-2.0.1.xsd"> 

    <global-method-security secured-annotations="enabled"></global-method-security> 

    <http auto-config="true" > 
     <intercept-url pattern="/admin/**" access="ROLE_TEST" /> 
     <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 

     <form-login 
      login-page="/login/index.jsp" 
      default-target-url="/admin/test.jsp" 
      authentication-failure-url="/login/index.jsp?login_error=1" /> 
    </http> 

    <authentication-provider user-service-ref="jdbcUserService">  
     <password-encoder ref="passwordEncoder"> 
       <salt-source system-wide="n103df"/> 
     </password-encoder>   
    </authentication-provider> 


    <beans:bean id="jdbcUserService" class="org.springframework.security.userdetails.jdbc.JdbcDaoImpl"> 
     <beans:property name="rolePrefix" value="" /> 
     <beans:property name="dataSource" ref="dataSource" /> 
     <beans:property name="enableAuthorities" value="true"/> 
     <beans:property name="enableGroups" value="false"/> 
     <beans:property name="authoritiesByUsernameQuery" value="SELECT username,authority FROM authorities WHERE username = ?" /> 
     <beans:property name="usersByUsernameQuery" value="SELECT username,password,enabled as enabled FROM users WHERE username = ?" /> 
     <beans:property name="groupAuthoritiesByUsernameQuery" value="" /> 

    </beans:bean> 

<beans:bean id="passwordEncoder" class="org.springframework.security.providers.encoding.Md5PasswordEncoder"/> 

docenią jakiejkolwiek pomocy :-) Dzięki z góry!

Odpowiedz

34

Jeśli otrzymujesz kod 403, oznacza to, że użytkownik nie ma wymaganych ról. Uwierzytelnianie nie jest problemem, jest autoryzacją.
Jedynym sposobem, aby dowiedzieć się, co się dzieje, jest ustawienie poziomu rejestrowania w celu debugowania, powinno być więcej informacji. Opublikuj tutaj.
Czy Twoje role mają prefiks "ROLE_"?

+0

Dobrze, przykro mi z powodu postu na kości, byłem zbyt zmęczony i rozpraszałem się, by myśleć prosto :-( – vector

+0

To było przyczyną moich błędów! Dziękuję! –

2

... wymyśliłem to. Pomimo ROLE_TEST określonej w pliku konfiguracyjnym i tyle samo w kolumnie „organ” w db, Wiosna-Sec spodziewałem ROLE_SUPERVISOR:

 
[DEBUG,AbstractSecurityInterceptor,http-8084-7] Secure object: FilterInvocation: URL: /admin/test.jsp; ConfigAttributes: [ROLE_TEST] 
[DEBUG,AbstractSecurityInterceptor,http-8084-7] Previously Authenticated: org.springframework.sec[email protected]: Principal: [email protected]: Username: testUser; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_SUPERVISOR; Password: [PROTECTED]; Authenticated: true; Details: [email protected]: RemoteIpAddress: 127.0.0.1; SessionId: 350B260FAFDDBF04D5CB4AAAB7B8A441; Granted Authorities: ROLE_SUPERVISOR 
[DEBUG,ExceptionTranslationFilter,http-8084-7] Access is denied (user is not anonymous); delegating to AccessDeniedHandler 
org.springframework.security.AccessDeniedException: Access is denied 
     at org.springframework.security.vote.AffirmativeBased.decide(AffirmativeBased.java:68) 

... teraz jestem ciekawy, jak to się stało? Po zmianie ROLE_TEST na ROLE_SUPERVISOR w pliku konfiguracyjnym wszystko działało zgodnie z oczekiwaniami.

+2

.... Zdałem sobie sprawę, że przez cały ten czas szukałem na niewłaściwym db, "powiedział nij Thaks a bunch, to pomogło! – vector

Powiązane problemy