Wir erstellen eine Webanwendung, die sowohl authentifizierten als auch anonymen Benutzern zur Verfügung steht. Wenn Sie sich nicht registrieren / anmelden, stehen Ihnen nur begrenzte Funktionen zur Verfügung. Die Benutzerauthentifizierung erfolgt über OpenID mit Spring Security. Das funktioniert gut.
Die Anwendung verfügt jedoch auch über eine Administrator-Benutzeroberfläche, die unter bereitgestellt wird <host>/<context-root>/admin
. Können wir mit Spring Security zwei separate Bereiche haben (z. B. Basisauthentifizierung für /admin/**
)? Wie muss das konfiguriert werden?
Spring Security hat Unterstützung für dieses Szenario in Version 3.1 hinzugefügt, die derzeit als Release Candidate verfügbar ist. Es wurde von SEC-1171 implementiert und Details zur Syntax finden Sie im Handbuch, das in 3.1 enthalten ist.
Es ist jedoch ziemlich einfach zu bedienen. Grundsätzlich definieren Sie http
in Ihrer Spring Security-Konfiguration nur mehrere Elemente, eines für jeden Bereich. Wir verwenden es so:
<!-- Configure realm for system administration users -->
<security:http pattern="/admin/**" create-session="stateless">
<security:intercept-url pattern='/**' access='ROLE_ADMIN' requires-channel="https" />
<security:http-basic/>
</security:http>
<!-- Configure realm for standard users -->
<security:http auto-config="true" access-denied-page="/error/noaccess" use-expressions="true" create-session="ifRequired">
<security:form-login login-page="/login"
...
...
</security:http>
Das Wichtigste ist pattern="/admin/**"
das erste http
Element. Dies teilt Spring mit, dass alle URLs unter /admin
diesem Bereich anstelle des Standardbereichs unterliegen - und daher verwenden URLs unter /admin
stattdessen die Basisauthentifizierung.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen