2017-10-05 3 views
0

GitHub 공급자와 함께 OAuth2를 사용하여 경로를 확보하는이 예를 따르고 요청 재 지정 후 누락 된 GET 매개 변수를 제외하고는 제대로 작동합니다.Vertx - OAuth2를 사용하여 경로를 보안하는 동안 GET 매개 변수가 누락되었습니다.

내 코드 :

public class MyVerticle extends AbstractVerticle { 
    @Override 
    public void start() throws Exception { 
     HttpServer server = vertx.createHttpServer(); 
     Router router = Router.router(vertx); 

     OAuth2Auth authProviderGitHub = GithubAuth.create(vertx, "<CLIENT_ID>", "<CLIENT_SECRET>"); 

     OAuth2AuthHandler oauth2 = OAuth2AuthHandler.create(authProviderGitHub, "http://localhost:8080/callback"); 

     oauth2.setupCallback(router.route()); 

     router.route("/protected/*").handler(oauth2); 

     Handler<RoutingContext> requestHandler = (routingContext) -> { 
      String paramValue = routingContext.request().getParam("param"); 
      routingContext.response().end("PARAM: " + paramValue); 
     }; 

     router.get("/endpoint").handler(requestHandler); 
     router.get("/protected/endpoint").handler(requestHandler); 

     server.requestHandler(router::accept).listen(8080); 
    } 
} 

나는 두 가지 간단한 엔드 포인트가 있습니다

/endpoint  // public, without protection 

/protected/endpoint // protected with OAuth2 

내가

와 브라우저 /엔드 포인트에서 호출 예상 PARAM 반환으로3210
http://localhost:8080/endpoint?param=foo 

작동 : foo는를 내가 제대로 GitHub의 로그인 페이지에 저를 리디렉션

http://localhost:8080/protected/endpoint?param=foo 

와 보호 엔드 포인트를 호출 할 때 반면, 다음 내 핸들러하지만 GET 매개 변수없이 쿼리를 반환 따라서 끝 점의 응답은 PARAM : null입니다.

내가 뭘 잘못하고 있는지 아는 사람이 있습니까?

답변

1

vert.x에서 < = 3.4.2 경로 만 리디렉션에 사용되었습니다. 3.5 시리즈가 개선되어 전체 URI에 의존 할 수 있으므로 코드가 해당 버전에서 작동합니다.

+0

3.5.0.Beta1에서 여전히 작동하지 않습니다. POST로 변경하고 본문에 매개 변수를 제공하는 것이 3.4.2에서 작동하는지 알고 있습니까? – Rem

+0

beta1 현재 스냅 샷이 작동 한 후에 수정 사항이 병합 된 것이 맞습니다. –

+0

https://github.com/vert-x3/vertx-web/issues/710 – ses