Mögliche Lösung:
- für
/admin
URL Interceptor In der erfordert "ROLE_ADMIN"
- konfigurieren Instanz
org.springframework.security.web.authentication.www.BasicAuthenticationFilter
die /admin
URL abzufangen und Benutzer als ROLE_ADMIN authentifizieren, wenn sie die entsprechenden Anmeldeinformationen bietet
Beispielkonfiguration:
<security:intercept-url pattern="/admin" access="ROLE_ADMIN"/>
<bean id="basicAuthenticationEntryPoint"
class="org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint">
<property name="realmName"
value="WS realm"/>
</bean>
<bean id="basicAuthenticationProcessingFilter"
class="org.springframework.security.web.authentication.www.BasicAuthenticationFilter">
<property name="authenticationManager"
ref="authenticationManager"/>
<property name="authenticationEntryPoint"
ref="basicAuthenticationEntryPoint"/>
</bean>
Hinweis: Die Standardimplementierung von BasicAuthenticationFilter ist ein passiver Filter, d. H. Es sucht nur nach einem Basis-Auth-Header in der Anfrage und wenn es nicht vorhanden ist - tut nichts. Wenn Sie die Filter wollen die Basis-Authentifizierung vom Client explizit benötigen, müssen Sie die Standardimplementierung erweitern beginnen Eintrittspunkt zur Authentifizierung:
public class BasicAuthenticationFilter
extends org.springframework.security.web.authentication.www.BasicAuthenticationFilter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
final HttpServletRequest request = (HttpServletRequest) req;
final HttpServletResponse response = (HttpServletResponse) res;
String header = request.getHeader("Authorization");
if ((header != null) && header.startsWith("Basic ")) {
super.doFilter(req, res, chain);
} else {
getAuthenticationEntryPoint().commence(request, response, new AuthenticationCredentialsNotFoundException("Missing credentials"));
}
}
}
Darüber hinaus müssen Sie den Filter optimieren, um /admin
URL anwenden Nur - entweder durch Festcodierung in doFilter
Methode oder durch Bereitstellung einer entsprechenden Wrapper Bean.
Ich habe graben überall versucht, herauszufinden, wie genau das zu tun, danke für das Aufzeigen so klar! –
Federsicherung 3.1.0 wurde offiziell am 7.12.2011 freigegeben – lrkwz
Ich mache genau das und wenn ich im Admin-Bereich angemeldet bin, bin ich auch im Benutzerbereich angemeldet, aber nicht autorisiert (natürlich). Ich denke, das liegt daran, dass die Frühjahrssicherheit die Genehmigung in der Sitzung unter einem Schlüssel hält. Gibt es eine Möglichkeit, Spring Security auf ein Szenario zu konfigurieren, bei dem Sie gleichzeitig mit verschiedenen Autorisierungsinstanzen im Admin- und im Benutzerbereich angemeldet sein können? –