403 - Zugriff verweigert wird nach der Authentifizierung
-
16-09-2019 - |
Frage
Grüße!
Wenn ich die Authentifizierung gegenüber meinem vorhandenen db versuche ich bin immer authentifiziert aber ich erhalte die 403-Seite. Wenn ich habe gerade versucht, ein falsches Passwort bekomme ich ‚falsche Anmeldeinformationen‘ Nachricht wie erwartet. Ich habe versucht, pro Probe App Authentifizierung enthalten mit SpringSecurity und das hat gut funktioniert.
sicherheits 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"/>
Wird jede Hilfe :-) schätzen Vielen Dank im Voraus!
Lösung
Wenn Sie einen 403-Code bekommen, bedeutet dies, dass der Benutzer nicht die erforderlichen Rollen hat. Also, athentication nicht das Problem ist, ist Ermächtigung.
Der einzige Weg, zu wissen, was los ist, ist Protokollierungsebene zu debuggen zu setzen, sollte es weitere Informationen sein. Dann poste es hier.
Hat Ihre Rollen den ‚ROLE_‘ Präfix haben?
Andere Tipps
... es herausgefunden. Trotz ROLE_TEST angegeben in der Konfigurationsdatei und das gleiche in der ‚Behörde‘ Spalte der db, Frühling-Sec erwartete 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.security.providers.UsernamePasswordAuthenticationToken@af840ed7: Principal: org.springframework.security.userdetails.User@3ec100: Username: testUser; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_SUPERVISOR; Password: [PROTECTED]; Authenticated: true; Details: org.springframework.security.ui.WebAuthenticationDetails@1c07a: 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)
... jetzt bin ich gespannt, wie kommt das? So nach ROLE_TEST zu ROLE_SUPERVISOR in der Konfigurationsdatei zu ändern alles funktioniert wie erwartet.