Несанкционированный доступ с пружинной защитой

Я пытаюсь добавить безопасность в приложение для отдыха.

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

Я настроил свой класс, который расширяет 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

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

Я получаю

HTTP/1.1 401 Unauthorized

Все URL-адреса с остальными защищены, но я предоставляю имя пользователя и пароль, которые должны быть указаны.

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

Есть кое-кто, кто неправильно делает ссылку.


person robert trudel    schedule 05.10.2015    source источник


Ответы (1)


Вам необходимо войти в систему, чтобы получить доступ к ресурсам с ограниченным доступом. Spring Security предоставляет точку входа по умолчанию для выполнения вашей аутентификации. Вот что делает эта часть данной ссылки:

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 URL / login с вашими параметрами username и password. Вот как это делается с помощью curl:

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

См. также:

person Xtreme Biker    schedule 05.10.2015
comment
спасибо за эту работу, просто нужно посмотреть, есть ли способ защитить мой html файл. - person robert trudel; 06.10.2015