2016-08-06 2 views
2

Après la mise à niveau de Spring-Boot de 1.3.7.RELEASE à 1.4.0.RELEASE Je reçois le problème, quand appelant mon service de repos par l'adaptateur de canal entrant, il lance un HttpClientErrorException.Spring-Integration: int: http: Inbound-canal-adaptateur lance 403 après la mise à niveau de printemps-démarrage à 1,4

Configuration inbound-channel-adapter:

<int-http:inbound-channel-adapter 
     channel="api_app_integration_request_channel" 
     supported-methods="PUT" 
     path="/process/ticket" 
     request-payload-type="*.model.Ticket" 
     header-mapper="headerMapper" 
     error-channel="internal-client-rest-ticket-error-channel" 
    > 
     <int-http:request-mapping consumes="application/json" /> 
    </int-http:inbound-channel-adapter> 

Restservice-Call:

private static final String URL = "http://localhost:8080/process/ticket"; 
public void openTicket(final Profile profile, final Ticket ticket) { 
     final HttpHeaders headers = new HttpHeaders(); 
     headers.set(Profile.PROFILE, profile.toString()); 
     final HttpEntity<Ticket> entity = new HttpEntity<Ticket>(ticket, headers); 
     template.exchange(URL, HttpMethod.PUT, entity, Ticket.class); 
    } 

Exception:

org.springframework.web.client.HttpClientErrorException: 403 null 
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91) 
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:667) 
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:620) 
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:580) 
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:498) 
    at *.client.rest.simulator.ProblemReporter.openTicket(ProblemReporter.java:28) 
    at *.client.SassRestSimulatorApplication.lambda$0(SassRestSimulatorApplication.java:96) 
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) 
    at java.util.stream.SliceOps$1$1.accept(SliceOps.java:204) 
    at java.util.stream.StreamSpliterators$InfiniteSupplyingSpliterator$OfRef.tryAdvance(StreamSpliterators.java:1356) 
    at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) 
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498) 
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485) 
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) 
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) 
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) 
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) 
    at *.client.SassRestSimulatorApplication.executeApplication(SassRestSimulatorApplication.java:96) 
    at *.client.SassRestSimulatorApplication.main(SassRestSimulatorApplication.java:47) 

Debug sortie

2016-08-07 18:56:24.022 DEBUG 16288 --- [   main] o.s.web.client.RestTemplate    : Created PUT request for "http://localhost:8080/process/ticket" 
2016-08-07 18:56:24.180 DEBUG 16288 --- [   main] o.s.web.client.RestTemplate    : Setting request Accept header to [application/json, application/*+json] 
2016-08-07 18:56:24.223 DEBUG 16288 --- [   main] o.s.web.client.RestTemplate    : Writing [Ticket# 1: [SIDE1-BS1-SP1] [SIDE1-BS1-SP1] [emergency] [NEW] Urgend problem. Fix immediately or revenue will be lost!] using [org.springfr[email protected]18918d70] 
2016-08-07 18:56:24.331 DEBUG 16288 --- [   main] o.s.web.client.RestTemplate    : PUT request for "http://localhost:8080/process/ticket" resulted in 403 (null); invoking error handler 

J'ai essayé int-http:inbound-gateway MAIS avec le même résultat.

Lorsque vous accédez à un service directement via Postman je reçois un 403 - Accès refusé et aucune exploitation forestière trouvé:

enter image description here

Je suis peu supried sur l'accès refusé, je ne l'utilise tout cadre de sécurité.

Sous Printemps-Boot 1.3.7.RELEASE fonctionne très bien:

Enregistrement-sortie:

2016-08-07 20:03:23.098 TRACE 9372 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet  : Bound request context to thread: [email protected] 
2016-08-07 20:03:23.098 DEBUG 9372 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet  : DispatcherServlet with name 'dispatcherServlet' processing PUT request for [/process/ticket] 
2016-08-07 20:03:23.098 TRACE 9372 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet  : Testing handler map [[email protected]23764bec] in DispatcherServlet with name 'dispatcherServlet' 
2016-08-07 20:03:23.098 TRACE 9372 --- [nio-8080-exec-4] o.s.w.s.handler.SimpleUrlHandlerMapping : No handler mapping found for [/process/ticket] 
2016-08-07 20:03:23.098 TRACE 9372 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet  : Testing handler map [org.springframework[email protected]5fa0d972] in DispatcherServlet with name 'dispatcherServlet' 
2016-08-07 20:03:23.098 DEBUG 9372 --- [nio-8080-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /process/ticket 
2016-08-07 20:03:23.098 DEBUG 9372 --- [nio-8080-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Did not find handler method for [/process/ticket] 
2016-08-07 20:03:23.098 TRACE 9372 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet  : Testing handler map [org.springframework.i[email protected]64dfb31d] in DispatcherServlet with name 'dispatcherServlet' 
2016-08-07 20:03:23.098 TRACE 9372 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet  : Testing handler adapter [org.springframework.web.servlet.mvc.metho[email protected]] 
2016-08-07 20:03:23.098 TRACE 9372 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet  : Testing handler adapter [[email protected]466d8b] 
2016-08-07 20:03:23.100 DEBUG 9372 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet  : Null ModelAndView returned to DispatcherServlet with name 'dispatcherServlet': assuming HandlerAdapter completed request handling 
2016-08-07 20:03:23.100 TRACE 9372 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet  : Cleared thread-bound request context: [email protected] 
2016-08-07 20:03:23.100 DEBUG 9372 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet  : Successfully completed request 
2016-08-07 20:03:23.119 DEBUG 9372 --- [ sassExecutor-1] o.s.web.client.RestTemplate    : Created PUT request for "http://localhost:8080/process/ticket" 
2016-08-07 20:03:23.120 DEBUG 9372 --- [ sassExecutor-1] o.s.web.client.RestTemplate    : Writing [Ticket# 666: [SIDE1-BS1-SP1] ] as "application/json" using [org.springfr[email protected]4d3ce1c0] 
2016-08-07 20:03:23.126 TRACE 9372 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet  : Bound request context to thread: [email protected] 
2016-08-07 20:03:23.127 DEBUG 9372 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet  : DispatcherServlet with name 'dispatcherServlet' processing PUT request for [/process/ticket] 
2016-08-07 20:03:23.128 TRACE 9372 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet  : Testing handler map [[email protected]23764bec] in DispatcherServlet with name 'dispatcherServlet' 
2016-08-07 20:03:23.128 TRACE 9372 --- [nio-8080-exec-5] o.s.w.s.handler.SimpleUrlHandlerMapping : No handler mapping found for [/process/ticket] 
2016-08-07 20:03:23.128 TRACE 9372 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet  : Testing handler map [org.springframework[email protected]5fa0d972] in DispatcherServlet with name 'dispatcherServlet' 
2016-08-07 20:03:23.128 DEBUG 9372 --- [nio-8080-exec-5] s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /process/ticket 
2016-08-07 20:03:23.129 DEBUG 9372 --- [nio-8080-exec-5] s.w.s.m.m.a.RequestMappingHandlerMapping : Did not find handler method for [/process/ticket] 
2016-08-07 20:03:23.129 TRACE 9372 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet  : Testing handler map [org.springframework.i[email protected]64dfb31d] in DispatcherServlet with name 'dispatcherServlet' 
2016-08-07 20:03:23.129 TRACE 9372 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet  : Testing handler adapter [org.springframework[email protected]35467187] 
2016-08-07 20:03:23.129 TRACE 9372 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet  : Testing handler adapter [[email protected]466d8b] 
2016-08-07 20:03:23.130 DEBUG 9372 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet  : Null ModelAndView returned to DispatcherServlet with name 'dispatcherServlet': assuming HandlerAdapter completed request handling 
2016-08-07 20:03:23.130 TRACE 9372 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet  : Cleared thread-bound request context: [email protected] 
2016-08-07 20:03:23.130 DEBUG 9372 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet  : Successfully completed request 
2016-08-07 20:03:23.134 DEBUG 9372 --- [ sassExecutor-1] o.s.web.client.RestTemplate    : PUT request for "http://localhost:8080/process/ticket" resulted in 200 (OK) 
Ticket# 666: [SIDE1-BS1-SP1] [SIDE1-BS1-SP1] [low] [DECRYPTED] Ich bin von Postman gesendet worden 

====== ======= EDIT

Sous Spring Boot 1.4.0 Je reçois des informations de débogage lors de l'appel du service de dépannage:

2016-08-08 19:21:35.382 DEBUG 8268 --- [nio-8080-exec-2] o.a.coyote.http11.Http11InputBuffer  : Received [PUT /process/ticket HTTP/1.1 
Host: localhost:8080 
Connection: keep-alive 
Content-Length: 206 
Cache-Control: no-cache 
Origin: chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm 
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 
profile: 192.168.56.102:10000 
Content-Type: application/json 
Accept: */* 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4 

{"ticketId":666,"issueDateTime":"2016-06-27","description":"Ich bin von Postman gesendet worden","sender":"SIDE1-BS1-SP1","receiver":"SIDE1-BS1-SP1","priority":"low","secured":"NEW","mimeType":"text/plain"}] 
2016-08-08 19:21:35.383 DEBUG 8268 --- [nio-8080-exec-2] o.a.c.authenticator.AuthenticatorBase : Security checking request PUT /process/ticket 
2016-08-08 19:21:35.383 DEBUG 8268 --- [nio-8080-exec-2] org.apache.catalina.realm.RealmBase  : No applicable constraints defined 
2016-08-08 19:21:35.383 DEBUG 8268 --- [nio-8080-exec-2] o.a.c.authenticator.AuthenticatorBase : Not subject to any constraint 
2016-08-08 19:21:35.383 DEBUG 8268 --- [nio-8080-exec-2] o.apache.catalina.core.StandardWrapper : Returning non-STM instance 
2016-08-08 19:21:35.384 DEBUG 8268 --- [nio-8080-exec-2] o.apache.coyote.http11.Http11Processor : Socket: [[email protected]:[email protected]:java.nio.channels.SocketChannel[connected local=/0:0:0:0:0:0:0:1:8080 remote=/0:0:0:0:0:0:0:1:57863]], Status in: [OPEN_READ], State out: [OPEN] 

Printemps-Boot-démarrage:

 <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-integration</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.integration</groupId> 
      <artifactId>spring-integration-http</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.integration</groupId> 
      <artifactId>spring-integration-stream</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-tomcat</artifactId> 
      <scope>provided</scope> 
     </dependency> 

====

Exemple-Application:

Sous Printemps-Boot 1.3.7 Works, 1.4 .0 Erreur comme décrit. Dropboxlink: link

+0

Regardez les journaux côté serveur. Si nécessaire, activez la journalisation DEBUG/TRACE et observez les mappages chemin/point final. –

+0

Debug-Output ajouté. Qu'est-ce qui a été changé entre 1.3.x et 1.4.x, que cela fonctionne sur 1.3, mais pas sur 1.4? –

+0

Pour moi, il semble que l'adaptateur de canal entrant ne fonctionne pas correctement. D'abord je ne sais pas, pourquoi je reçois un 403 (aucune utilisation de la sécurité), sur le côté serveur aucune journalisation, je ne peux pas l'appeler par RestTemplate ni par Postman. Revenir à Spring Boot 1.3.7 tout va bien. Même chose avec la passerelle entrante. :-( –

Répondre

1

Eh bien, puisque vous avez là Boot printemps il ressemble vraiment à la spring-security en classpath provoque une configuration automatique de sécurité (SecurityAutoConfiguration). Essayez d'activer l'option --debug lorsque vous démarrez l'application et regardez dans la configuration automatique pour le mot «sécurité».OTOH vous avez montré les premiers journaux pour Tomcat, mais ils ne disent rien sur le processus supplémentaire avec DispatcherServlet.

Peut-on voir ces journaux?

MISE À JOUR

Merci pour l'application de l'échantillon. Malheureusement cela fonctionne pour moi:

:: Spring Boot ::  (v1.4.0.RELEASE) 

2016-08-11 11:35:36.762 INFO 8636 --- [   main] com.example.RestSimulatorApplication  : Starting RestSimulatorApplication on HOME with PID 8636 (D:\SpringIO\Spring140IntegrationTest\target\classes started by abilan in D:\SpringIO\Spring140IntegrationTest) 
... 
'dispatcherServlet': initialization started 
2016-08-11 11:35:39.694 INFO 8636 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet  : FrameworkServlet 'dispatcherServlet': initialization completed in 11 ms 
Ticket# 1: [emergency] [NEW] Urgend problem. Fix immediately or revenue will be lost! 
Ticket# 2: [medium] [NEW] There is an issue; take a look whenever you have time. 
Ticket# 3: [emergency] [NEW] Urgend problem. Fix immediately or revenue will be lost! 
Ticket# 4: [medium] [NEW] There is an issue; take a look whenever you have time. 

Je l'ai essayé sur Windows et Mac avec les mêmes bons résultats.

Peut-être que vous avez un mur feu sur votre machine à la règle ne permettent pas les demandes avec une en-tête ou autre chose? ..

+0

Hey Artem, sous le lien suivant, vous pouvez voir le rapport d'autoconfiguration. Je n'ai aucune bibliothèque de sécurité sur classpath (pom.xml), la recherche de texte intégral sous eclipse avec la sécurité de mot-clé n'a aucune correspondance. Dropboxlink: https://www.dropbox.com/sh/la7ff5mwl4ga79k/AAAoS7Bj0b4tzeWNUZKoTOg-a?dl=0 –

+0

J'ai également ajouté la journalisation lorsque Tomcat démarre –

+0

Hm. Cela n'aide pas. Pardon. Je me demande si vous pouvez partager une application Spring Boot simple pour jouer de notre côté localement. –