Seguridad de arranque de primavera: el cartero trabaja con el resto, pero el comando de rizo falla -- java campo con spring campo con spring-boot campo con curl campo con spring-security camp Relacionados El problema

Spring boot security - postman works with REST but curl command fails


1
vote

problema

Español

Soy nuevo en la bota de primavera, especialmente la seguridad de la primavera. Estoy realizando alguna prueba en mi simple servicio de descanso.

Hay dos de ellos: http: // localhost: 8080 / sayhello y http: // localhost: 8080 / api / sayhello

My Security Config tiene esto:

  http.httpBasic().and()                 .authorizeRequests()                 .antMatchers("/api/**")                 .hasRole("USER")                 .anyRequest()                 .fullyAuthenticated();   

Espero http: // localhost: 8080 / api / sayhello para ser autenticado, y no http: // localhost: 8080 / sayhello

Cuando pruebo http: // localhost: 8080 / sayhello en Postman, veo el mensaje correcto, veo el mensaje correcto, ¿Cuál es "Hola!".

Pero cuando ejecuto este comando de curl curl -i -X GET http://localhost:8080/sayhello/ , obtengo esto:

  HTTP/1.1 401 Set-Cookie: JSESSIONID=DDB9A6FF9CBCB9811E141FF17A5D40CB; Path=/; HttpOnly WWW-Authenticate: Basic realm="Realm" X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Date: Tue, 15 Jan 2019 09:11:09 GMT  {"timestamp":"2019-01-15T09:11:09.509+0000","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/sayhello/"}   

Por favor, ¿qué estoy haciendo mal?

gracias.

Original en ingles

I'm new to spring boot, especially spring security. I'm carrying out some test on my simple REST service.

There are two of them: http://localhost:8080/sayhello and http://localhost:8080/api/sayhello

My security config has this:

http.httpBasic().and()                 .authorizeRequests()                 .antMatchers("/api/**")                 .hasRole("USER")                 .anyRequest()                 .fullyAuthenticated(); 

I expect http://localhost:8080/api/sayhello to be authenticated, and not http://localhost:8080/sayhello

When I test http://localhost:8080/sayhello on postman, I see the correct message, which is "Hi!".

But when I run this curl command curl -i -X GET http://localhost:8080/sayhello/, I get this:

HTTP/1.1 401 Set-Cookie: JSESSIONID=DDB9A6FF9CBCB9811E141FF17A5D40CB; Path=/; HttpOnly WWW-Authenticate: Basic realm="Realm" X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 X-Frame-Options: DENY Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Date: Tue, 15 Jan 2019 09:11:09 GMT  {"timestamp":"2019-01-15T09:11:09.509+0000","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/sayhello/"} 

Please, what am I doing wrong?

Thanks.

              
 
 

Lista de respuestas

2
 
vote
vote
La mejor respuesta
 

Por defecto, toda su URL se autentica en $(function () { setInterval(function () { $.ajax({ type: "POST", cache: false, url: "Ajax/funk.cshtml", dataType: "text", success: function (data) { $('#divId').text(data); alert('Load completed.'); } }); }, 2000); }); 1111 .

línea que usa usado

  $(function () {  setInterval(function () {     $.ajax({         type: "POST",         cache: false,         url: "Ajax/funk.cshtml",         dataType: "text",         success: function (data) {             $('#divId').text(data);                     alert('Load completed.');         }     }); }, 2000); }); 2  

aquí

  $(function () {  setInterval(function () {     $.ajax({         type: "POST",         cache: false,         url: "Ajax/funk.cshtml",         dataType: "text",         success: function (data) {             $('#divId').text(data);                     alert('Load completed.');         }     }); }, 2000); }); 3  

Toda la URL está bloqueada por el filtro de seguridad de resorte. Pero la API que coincide con $(function () { setInterval(function () { $.ajax({ type: "POST", cache: false, url: "Ajax/funk.cshtml", dataType: "text", success: function (data) { $('#divId').text(data); alert('Load completed.'); } }); }, 2000); }); 4 PATRY debe tener el rol $(function () { setInterval(function () { $.ajax({ type: "POST", cache: false, url: "Ajax/funk.cshtml", dataType: "text", success: function (data) { $('#divId').text(data); alert('Load completed.'); } }); }, 2000); }); 5 . Excepto que la URL de desajustamiento debe validarse a través de $(function () { setInterval(function () { $.ajax({ type: "POST", cache: false, url: "Ajax/funk.cshtml", dataType: "text", success: function (data) { $('#divId').text(data); alert('Load completed.'); } }); }, 2000); }); 616 FILTRO.

Debes usar así.

  $(function () {  setInterval(function () {     $.ajax({         type: "POST",         cache: false,         url: "Ajax/funk.cshtml",         dataType: "text",         success: function (data) {             $('#divId').text(data);                     alert('Load completed.');         }     }); }, 2000); }); 7  

o

  $(function () {  setInterval(function () {     $.ajax({         type: "POST",         cache: false,         url: "Ajax/funk.cshtml",         dataType: "text",         success: function (data) {             $('#divId').text(data);                     alert('Load completed.');         }     }); }, 2000); }); 8  

Agregar esta línea a su HTTPAuthentication le permitirá golpear la API $(function () { setInterval(function () { $.ajax({ type: "POST", cache: false, url: "Ajax/funk.cshtml", dataType: "text", success: function (data) { $('#divId').text(data); alert('Load completed.'); } }); }, 2000); }); 9 de forma anónima.

O puede anular @DateTime.Now0 como este .. (Esto también funcionará).

  @DateTime.Now1  

Gracias ..

 

By default all of your url is authenticated in Spring-Security.

line that use used

http.httpBasic().and()                 .authorizeRequests()                 .antMatchers("/api/**")  // all url with /api/** will be authenticated having role of USER.                 .hasRole("USER")                 .anyRequest()                 .fullyAuthenticated(); 

Here

            .antMatchers("/api/**")             .hasRole("USER") 

All url is blocked by Spring-security filter. but api that matches /api/** pattern must have role USER. except mismatching url must be validated through Spring-security Filter.

You should use like this.

  .antMatchers("/sayhello/**").permitAll(); 

OR

  .anyRequest().permitAll() 

add this line to your httpAuthentication will allow you to hit api http://localhost:8080/sayhello anonymously.

or you may override configure(WebSecurity web) like this.. (this will also work).

@Override public void configure(WebSecurity web) throws Exception {     web.ignoring().antMatchers("/sayhello"); } 

Thank You..

 
 
-1
 
vote

La seguridad de la primavera permite la autenticación de URL de forma predeterminada en todos sus puntos finales. Por lo tanto, es más fácil definir las URL permitidas en su lugar. Aquí hay un código modificado

  @DateTime.Now2  
 

Spring Security enables URL authentication by default on all of your endpoints. Thus, it is easier to define the permitted URLs instead. Here's a modified code

http.httpBasic().and()             .authorizeRequests()             .antMatchers("/sayhello").permitAll()             .anyRequest()             .hasRole("USER")             .fullyAuthenticated(); 
 
 

Relacionados problema

2  Grieles problema de seguridad y optimización de motores de búsqueda  ( Grails security problem and search engine optimization ) 
Estoy tratando de crear una lógica de control que depende de la página GSP actual para llamar a una acción, ¿hay una etiqueta o un método de sesión que pueda ...

2  Seguridad de la primavera con autenticación CAS y Autorización personalizada  ( Spring security with cas authentication and custom authorization ) 
Soy un novato para la seguridad de la primavera y la CAS. Obtuve la parte de la SSO que trabaja, pero estoy luchando con la que trabaja la parte de autorizaci...

1  Agregar usuarios a la seguridad de la primavera 3  ( Adding users to spring 3 security ) 
Estoy pensando en implementar la autorización de los usuarios a través de la seguridad de la primavera 3. Sé que los nombres de usuario y las contraseñas se a...

0  LDAP La búsqueda de grupo de Active Directory en la base no está perforando para incluir varios OUS  ( Ldap active directory group search on base not drilling down to include multiple ) 
Estoy tratando de recuperar todos los grupos de anuncios para el usuario de autenticación en mi aplicación Java, donde los grupos provienen de dos unidades or...

12  Redirigir después del inicio de sesión (seguridad de primavera en GaE)  ( Redirect after login spring security on gae ) 
Estoy teniendo algunos problemas para hacer que mi inicio de sesión redirige al mismo lugar siempre. He hecho algo como este <http auto-config="true" use-e...

2  ¿Puedes tener tanto formulario como de autorización básica utilizando la primavera 3?  ( Can you have both form and basic authenication using spring 3 ) 
Me gustaría tener tanto Forma como Autenticación básica. Si la solicitud viene como https: // username: contraseña@mysite.com/ Basic Se utiliza la autenti...

0  Seguridad de la primavera: autenticar la API de descanso solo si aún no está autenticada a través de un inicio de sesión  ( Spring security authenticate rest api only if not already authenticated via for ) 
todos, Tengo una aplicación de arranque de primavera con MVC y Puntos de final de descanso. Los usuarios del inicio de sesión de la aplicación web utilizand...

1  Spring-Security no está recogiendo mi Administrador de autenticación  ( Spring security is not picking up my authentication manager ) 
Estoy atornillado con el problema de la configuración de seguridad de la primavera Aquí está mi configuración <security:global-method-security pre-po...

0  Cómo encontrar el token de CSRF está funcionando o no  ( How to find csrf token is working or not ) 
Estoy usando springs-security.xml InOrdenar para configurar el token de CSRF. El token de CSRF es por deformuo habilitado. A pesar de que habilité manualmen...

2  Nombre de usuario de CAS y roles de otra base de datos  ( Username from cas and roles from another database ) 
Tengo CAS 3 Spring 3.2 y Spring Security 3.2 Funcionamiento en Tomcat 7 con una base de datos MySQL. Utilizamos la base de datos MySQL con CAS para autentic...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos