Притворный клиент, делающий почтовый звонок вместо GET

Мы используем API-интерфейс шлюза Netflix, клиент Zuul и Feign. Мы обращаемся к нашему security-api для каждого запроса проверки подлинности пользователя. Во время связи с клиентом удаленного отдыха (микросервис для проверки токена) возникло непредвиденное исключение.

Caused by: feign.FeignException: status 405 reading RemoteSecurityAPI#validateToken(String); content:
{"timestamp":1508809658401,"status":405,"error":"Method Not Allowed","exception":"org.springframework.web.HttpRequestMethodNotSupportedException","message":"Request
method 'POST' not supported","path":"/api/v1//auth/validate/token"}
        at feign.FeignException.errorStatus(FeignException.java:62) ~[feign-core-9.5.0.jar!/:na]

public class AuthenticationPreZuulFilter extends ZuulFilter
{
    @Autowired
    RemoteSecurityAPI securityAPI;
    final RequestContext requestContext = RequestContext.getCurrentContext();
    final HttpServletRequest request = requestContext.getRequest();
    final String header = request.getHeader("Authorization");
    String authToken = header.substring(7);
    securityAPI.validateToken(authToken);
}

@FeignClient(name = "martmonkey-security-api")
public interface RemoteSecurityAPI
{
    @RequestMapping(method = RequestMethod.GET, value = "${jwt.route.authentication.validate}")
    public void validateToken(@Param("authToken") String authToken);
}

jwt.route.authentication.validate = / API /v1// авт / Validate / маркер? маркер = {authToken}

zuul:
  #Service will be mapped under the /api URI
  prefix: /api/v1
  strip-prefix: false
  sensitiveHeaders: Cookie,Set-Cookie,Authorization
  routes:
    martmonkey-security-api:
      path: /auth/**
      strip-prefix: false
      sensitiveHeaders: Cookie,Set-Cookie,Authorization
      serviceId: martmonkey-security-api
    martmonkey-user-api:
      path: /users/**
      serviceId: martmonkey-user-api

jwt.route.authentication.validate = / авт / Validate / маркер

@Consumes("application/json")
@Produces("application/json")
@RestController
@RequestMapping("/api/v1")
@Api(value="Security check.", description="Operations pertaining to login.")
public class AuthenticationResource
{
    @RequestMapping(method = RequestMethod.GET, value = "${jwt.route.authentication.validate}")
    public ResponseEntity<Void> validateToken(@QueryParam("token") final String authToken)
    {
    }
}

Почему шлюз api делает запрос с типом метода 'post', хотя мы сказали использовать "method = RequestMethod.GET".

0 ответов

Другие вопросы по тегам