/ / Nieautoryzowany dostęp z zabezpieczeniem sprężynowym - sprężyna, zabezpieczenie sprężynowe, sprężyna rozruchowa, sterownik sprężynowy, sprężyna

Nieautoryzowany dostęp dzięki sprężystemu zabezpieczeniu - sprężyna, zabezpieczenie przed sprężyną, sprężynowy bagażnik, regulator sprężyn, sprężyna

Próbuję dodać zabezpieczenia do aplikacji spoczynkowej.

Śledziłem ten samouczek: http://www.codesandnotes.be/2014/10/31/restful-authentication-using-spring-security-on-spring-boot-and-jquery-as-a-web-client/

Skonfigurowałem moją klasę, która rozszerza WebSecurityConfigurerAdapter.

http.authorizeRequests().antMatchers("/rest/**").authenticated();
http.csrf().disable();
http.exceptionHandling().authenticationEntryPoint(authenticationEntryPoint);
http.formLogin().successHandler(authenticationSuccessHandler);
http.formLogin().failureHandler(authenticationFailureHandler);

Mam login.html, index.html, który ładuje (za pomocą jquery) jakiś inny plik HTML w index.html.

Próbuję uzyskać dostęp do usługi za pomocą curl

curl -i -X POST -d username=test -d password=test http://localhost:8080/rest/cities

dostałem

HTTP/1.1 401 Unauthorized

Cały adres URL z resztą jest zabezpieczony, ale podaję nazwę użytkownika i hasło.

Podczas debugowania widzę, że moja klasa, która implementuje UserDetailsService, która ma metodę loadUserByUsername, nigdy nie jest wywoływana.

Jest coś, co nie robi poprawnie linku.

Odpowiedzi:

1 dla odpowiedzi № 1

Musisz być zalogowany, aby uzyskać dostęp do ograniczonych zasobów. Spring Security zapewnia domyślny punkt wejścia do przeprowadzania uwierzytelniania. To właśnie robi ta część Twojego linku:

jQuery(document).ready(function ($) {
$("#loginform").submit(function (event) {
event.preventDefault();
var data = "username=" + $("#username").val() + "&password=" + $("#password").val();
$.ajax({
data: data,
timeout: 1000,
type: "POST",
url: "/login"

}).done(function(data, textStatus, jqXHR) {
var preLoginInfo = JSON.parse($.cookie("dashboard.pre.login.request"));
window.location = preLoginInfo.url;

}).fail(function(jqXHR, textStatus, errorThrown) {
alert("Booh! Wrong credentials, try again!");
});
});
});

Więc musisz SŁUPEK temu /Zaloguj Się url z twoim Nazwa Użytkownika i hasło parametry. Tak to się robi z curl:

curl -i -X POST -d username=user -d password=userPass -c /opt/cookies.txt
http://localhost:8080/rest/login

Oznacza to zalogowanie się przy użyciu swoich danych uwierzytelniających i zapisanie danego pliku cookie w pliku cookies.txt plik. Następnie wystarczy dołączyć ten plik cookie do każdego żądania wykonywanego w celu uzyskania pozwolenia na serwerze:

curl -i --header "Accept:application/json" -X GET -b /opt/cookies.txt
http://localhost:8080/rest/cities

Zobacz też: