/ / Несанкціонований доступ з пружинним захистом - пружина, пружинний захист, підпружинений, пружинний регулятор, пружинний

Несанкціонований доступ з пружинним захистом - пружина, пружинна безпека, підпружинена підвіска, пружинний регулятор, пружинний відпочинок

Я намагаюся додати безпеку до додатку відпочинку.

Я прослідкував за цим посібником: http://www.codesandnotes.be/2014/10/31/restful-authentication-using-spring-security-on-spring-boot-and-jquery-as-a-web-client/

Я налаштував свій клас, який розширює WebSecurityConfigurerAdapter.

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

У мене є login.html, index.html, який завантажує (через jquery) який-небудь інший файл html у index.html.

Я намагаюся отримати доступ до служби з завитками

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

Я отримую a

HTTP/1.1 401 Unauthorized

Всі url з відпочинком захищені, але я повинен вказати ім'я користувача та пароль.

Коли я налагоджую, я бачу, то мій клас, який реалізує UserDetailsService, які мають метод loadUserByUsername ніколи не викликається.

Є щось, хто не робить правильно посилання.

Відповіді:

1 для відповіді № 1

Щоб отримати доступ до обмежених ресурсів, потрібно ввійти в систему. Весняна безпека є точкою входу за промовчанням. Що робить ця частина вашого посилання:

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!");
});
});
});

Так що вам потрібно POST в / login url з вашою ім'я користувача і пароль параметри. Це робиться з завитками:

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

Це потрібно для входу з обліковими даними та збереження даного файлу cookie в cookies.txt файл. Потім вам потрібно просто прикріпити цей файл cookie в кожному запиті, виконаному для отримання дозволу на сервері

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

Дивись також: