Пружинный Ботинок 2.0.0.Конечная точка маркера M4 OAuth2 выбрасывает org.весенняя рамка.сеть.HttpRequestMethodNotSupportedException


Я пытаюсь перейти с Spring Boot 1.5.7 на 2.0.0.M4

Прямо сейчас я не могу правильно перенастроить свою конфигурацию OAuth2 + JWT на Spring Boot 2.0.0.M4

Во время запуска я заметил следующие ошибки для конечной точки /oauth/token (throws org.springframework.web.HttpRequestMethodNotSupportedException) в журнале:

2017-10-04 09:52:46.841  INFO 11780 --- [           main] .s.o.p.e.FrameworkEndpointHandlerMapping : Mapped "{[/oauth/authorize],methods=[POST],params=[user_oauth_approval]}" onto public org.springframework.web.servlet.View org.springframework.security.oauth2.provider.endpoint.AuthorizationEndpoint.approveOrDeny(java.util.Map<java.lang.String, java.lang.String>,java.util.Map<java.lang.String, ?>,org.springframework.web.bind.support.SessionStatus,java.security.Principal)
2017-10-04 09:52:46.842  INFO 11780 --- [           main] .s.o.p.e.FrameworkEndpointHandlerMapping : Mapped "{[/oauth/authorize]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.security.oauth2.provider.endpoint.AuthorizationEndpoint.authorize(java.util.Map<java.lang.String, java.lang.Object>,java.util.Map<java.lang.String, java.lang.String>,org.springframework.web.bind.support.SessionStatus,java.security.Principal)
2017-10-04 09:52:46.843  INFO 11780 --- [           main] .s.o.p.e.FrameworkEndpointHandlerMapping : Mapped "{[/oauth/token],methods=[GET]}" onto public org.springframework.http.ResponseEntity<org.springframework.security.oauth2.common.OAuth2AccessToken> org.springframework.security.oauth2.provider.endpoint.TokenEndpoint.getAccessToken(java.security.Principal,java.util.Map<java.lang.String, java.lang.String>) throws org.springframework.web.HttpRequestMethodNotSupportedException
2017-10-04 09:52:46.844  INFO 11780 --- [           main] .s.o.p.e.FrameworkEndpointHandlerMapping : Mapped "{[/oauth/token],methods=[POST]}" onto public org.springframework.http.ResponseEntity<org.springframework.security.oauth2.common.OAuth2AccessToken> org.springframework.security.oauth2.provider.endpoint.TokenEndpoint.postAccessToken(java.security.Principal,java.util.Map<java.lang.String, java.lang.String>) throws org.springframework.web.HttpRequestMethodNotSupportedException
2017-10-04 09:52:46.845  INFO 11780 --- [           main] .s.o.p.e.FrameworkEndpointHandlerMapping : Mapped "{[/oauth/check_token]}" onto public java.util.Map<java.lang.String, ?> org.springframework.security.oauth2.provider.endpoint.CheckTokenEndpoint.checkToken(java.lang.String)
2017-10-04 09:52:46.845  INFO 11780 --- [           main] .s.o.p.e.FrameworkEndpointHandlerMapping : Mapped "{[/oauth/confirm_access]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.security.oauth2.provider.endpoint.WhitelabelApprovalEndpoint.getAccessConfirmation(java.util.Map<java.lang.String, java.lang.Object>,javax.servlet.http.HttpServletRequest) throws java.lang.Exception
2017-10-04 09:52:46.846  INFO 11780 --- [           main] .s.o.p.e.FrameworkEndpointHandlerMapping : Mapped "{[/oauth/error]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.security.oauth2.provider.endpoint.WhitelabelErrorEndpoint.handleError(javax.servlet.http.HttpServletRequest)
2017-10-04 09:52:46.848  INFO 11780 --- [           main] .s.o.p.e.FrameworkEndpointHandlerMapping : Mapped "{[/oauth/token_key],methods=[GET]}" onto public java.util.Map<java.lang.String, java.lang.String> org.springframework.security.oauth2.provider.endpoint.TokenKeyEndpoint.getKey(java.security.Principal)

Чтобы воспроизвести эту проблему, я создал проект GitHub - https://github.com/Artgit/spring-boot-2.0.0.M4-oauth2-token-issue/tree/master/api

Я приказываю произвести этот выпуск пожалуйста, попробуйте выполнить com.decisionwanted.domain.api.decision.DecisionControllerIT.testCreateDecision() тест

Я приношу извинения за беспорядок в коде и Пом.XML. Я скомпилировал этот тестовый проект из многомодульного приложения Maven для тестирования.

Пожалуйста, помогите мне исправить мои конфигурации, чтобы иметь возможность работать с Spring Boot 2.0.0.M4

Обновлено

Во время отладки я обнаружил, что server.contextPath: /api из application.properties не учитывается. Прямо сейчас мне нужно использовать /oauth/token (вместо /api/oauth/token, как я использую с Spring Boot 1.5.7), чтобы получите жетон. В чем может быть причина этого и как ее исправить ?

1 2

1 ответ:

Я нашел причину проблемы - согласно следующей документации https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/ с Spring Boot 2* для определения контекстного пути приложения следует использовать следующее свойство:

server.servlet.context-path= /api

Обратите внимание, что пружинный ботинок 1.5.* свойство

server.contextPath: /api

Больше не учитывается