Ich habe Spring-Sicherheit konfiguriert mit grundlegenden und formularbasierten Authentifizierung gemäß auto-config='true'
.Wie kann ich die auf Springform basierende Anmeldung für REST-konforme Endpunkte deaktivieren?
Ich möchte die Endpunkte unter /api/**
KEINE formularbasierte Sicherheit verwenden. Andere Endpunkte außerhalb von /api/**
sollten die formularbasierte Anmeldung verwenden. Ich möchte eine 401
Antwort an jeden Anruf für diese Endpunkte gesendet, die keine Anmeldeinformationen unter /api/**
bieten.
UPDATE: Dank Luke Taylors Kommentar unten habe ich die folgende Lösung gefunden.
HINWEIS: Diese Technik kann nur ab der Federsicherung 3.1 angewendet werden.
Zuerst erhalte ich /api/**
. Wir erstellen nie eine Sitzung, obwohl eine verwendet wird, falls verfügbar, dies wird von create-session="never"
und die Verwendung von <session-management/>
behandelt.
<http pattern="/api/**" create-session="never" use-expressions="true">
<http-basic />
<session-management />
<intercept-url pattern="/api/**" access="hasRole('API_ACCESS')"/>
</http>
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/" access="permitAll"/>
<intercept-url pattern="/**" access="isAuthenticated()"/>
</http>
Schauen Sie hier http://www.baeldung.com/2011/10/31/securing-a-restful-web-service-with-spring-security-3-1-part-3/. In diesem Tutorial finden Sie einige Antworten auf Ihre Fragen. – dimas
Siehe meine Antwort auf [diese Frage] (http://stackoverflow.com/questions/9302795/handling-both-form-and-http-basic-authentication-with-different-sources), die im Wesentlichen das Gleiche fordert. –
Hallo Luke, in der Theorie sieht das wie ich aus und werde untersuchen, wie ich es anwende. Mit mehreren '' Tags könnten sie versehentlich beide die Anfrage bearbeiten? Vielleicht kann ich mit SPEL etwas anderes als '/ api' finden. Ich war mir nicht bewusst, dass in Frühling-Sicherheit 3.1 jetzt erlauben sie mehrere "" Tags, das ist eine gute Sache. –