/ / Acceso no autorizado con seguridad de resorte - resorte, seguridad de resorte, bota de resorte, controlador de resorte, resto de resorte

Acceso no autorizado con seguridad de resorte - resorte, seguridad de resorte, bota de resorte, controlador de resorte, resto de resorte

Intento añadir seguridad a una aplicación de descanso.

Seguí este tutorial: http://www.codesandnotes.be/2014/10/31/restful-authentication-using-spring-security-on-spring-boot-and-jquery-as-a-web-client/

Configuré mi clase que extiende WebSecurityConfigurerAdapter.

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

Tengo un login.html, index.html que carga (a través de jquery) algún otro archivo html en index.html.

Intento acceder a un servicio con curl

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

Yo tengo un

HTTP/1.1 401 Unauthorized

Toda la URL con el resto está asegurada, pero yo proporciono el nombre de usuario y la contraseña deben escribir.

Cuando depuro, veo que nunca se llama a mi clase que implementa UserDetailsService que tienen el método loadUserByUsername.

Hay algo que no hace el enlace correctamente.

Respuestas

1 para la respuesta № 1

Debes iniciar sesión para acceder a los recursos restringidos. Spring Security proporciona un punto de entrada predeterminado para realizar su autenticación. Eso es lo que hace esta parte de tu enlace:

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

Así que necesitas ENVIAR el /iniciar sesión url con tu usuario y contraseña parámetros Así es como se hace con el rizo:

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

Lo que esto hace es iniciar sesión con sus credenciales y almacenar la cookie dada en el cookies.txt expediente. Entonces, solo tendrá que adjuntar esa cookie en cada solicitud realizada para obtener permiso en su servidor:

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

Ver también: