spring-security - secure - spring security rest token authentication
Asegurar el punto final REST usando seguridad de primavera (1)
El ejemplo que ha seguido es la implementación de una autenticación basada en formularios. Para cambiarlo a http auth
(que es más adecuado para los servicios REST), debe buscar la siguiente etiqueta form-login
en su security.xml:
<form-login
login-page="/login"
default-target-url="/welcome"
authentication-failure-url="/login?error"
username-parameter="username"
password-parameter="password" />
Y simplemente cámbialo a una etiqueta http-basic
vacía:
<http-basic />
Si no cambiaste nada más, entonces debería funcionar perfectamente. También puede probar su configuración desde su navegador, tratando de acceder a su página. Si configuró todo correctamente, recibirá una ventana emergente esta vez, no un formulario. Esa será una autenticación HTTP básica que le dará la bienvenida.
Dado que es probable que esté utilizando la configuración basada en Java, el equivalente de este cambio sería reemplazar:
http.authorizeRequests()
.antMatchers("/admin/**").access("hasRole(''ROLE_ADMIN'')")
.antMatchers("/dba/**").access("hasRole(''ROLE_ADMIN'') or hasRole(''ROLE_DBA'')")
.and().formLogin();
con:
http.authorizeRequests()
.antMatchers("/admin/**").access("hasRole(''ROLE_ADMIN'')")
.antMatchers("/dba/**").access("hasRole(''ROLE_ADMIN'') or hasRole(''ROLE_DBA'')")
.and().httpBasic();
Estoy tratando de proporcionar seguridad a los puntos finales REST. Estoy siguiendo las instrucciones de esta página . En mi caso, no tengo vista, por lo tanto, no he creado el controlador para especificar las vistas y no he agregado ViewResolver en mi AppConfig.java
Después de la implementación, muestra correctamente el error de acceso denegado al llamar a un punto final REST protegido. Pero a pesar de que especifique el nombre de usuario / contraseña en el encabezado de la solicitud, obtengo el error de acceso denegado. Estoy probando el nombre de usuario / contraseña del cartero en Basic Auth. ¿Qué es lo que me falta alguna idea?