Mam skonfigurowane zabezpieczenia sprężynowe przy użyciu uwierzytelniania podstawowego i formularza, zgodnie z auto-config='true'
.Jak mogę wyłączyć logowanie oparte na formularzu sprężynowym dla RESTful punktów końcowych?
Chciałbym, aby punkty końcowe pod numerem /api/**
NIE używały zabezpieczeń opartych na formularzach. Inne punkty końcowe spoza /api/**
powinny używać logowania opartego na formularzu. Chciałbym otrzymać odpowiedź 401
na każde połączenie dla tych punktów końcowych, którzy nie podali poświadczeń pod numerem /api/**
.
UPDATE: Dzięki komentarzowi Luke'a Taylora poniżej wymyśliłem następujące rozwiązanie.
UWAGA: Ta technika może być stosowana tylko od wiosny bezpieczeństwa 3.1.
Najpierw wybieram /api/**
. Nigdy nie tworzymy sesji, ale używamy jednej, jeśli jest dostępna, jest ona obsługiwana przez create-session="never"
i użycie <session-management/>
.
<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>
Zobacz tutaj http://www.baeldung.com/2011/10/31/securing-a-restful-web-service- with-spring-security-3-1-part-3/. W tym samouczku znajdziesz odpowiedzi na swoje pytania. – dimas
Zobacz moją odpowiedź na [to pytanie] (http://stackoverflow.com/questions/9302795/handling-oth-form-and-http-basic-authentication-with-different-sources), która zasadniczo pyta o to samo. –
Cześć Luke, teoretycznie wygląda to na to, czego szukam i zbadam zastosowanie. Posiadając wiele znaczników ' ', mogą one przypadkowo obsłużyć żądanie? Może mogę użyć Spel, aby dopasować coś innego niż '/ api'. Nie wiedziałem, że na wiosnę - bezpieczeństwo 3.1 pozwalają teraz na wiele znaczników '', to dobrze. –