2017-10-03 11 views
1

JSONを返すGrizzlyサーバーを作成しました。それはうまく動作します:Grizzlyサーバにフィルタを追加するには?

final ResourceConfig resourceConfig = new ResourceConfig().packages("com.mypackage"); 
    resourceConfig.setApplicationName("My-Service"); 
    resourceConfig.register(JacksonJaxbJsonProvider.class); 
    server = GrizzlyHttpServerFactory.createHttpServer(uri, resourceConfig); 
私は フィルタが必要

x-forwarded-protohttpであればAuthorizationヘッダは、302 /リダイレクトで有効なキー

  • で応答が含まれている場合

    • チェックすることを(に設定された場所でhttps相当)
    • x-forwarded-forがホワイトリストにない場合、403 /と応答します

    今私はこのようなこれらのチェックでください:それは

    @Path( "V1") パブリッククラスファサード{

    @GET 
    @Path("/getinfo/{infotype}") 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response getNextPwc(@HeaderParam("authorization") String authorizationKey, 
         @Context Request request, 
         @HeaderParam("x-forwarded-proto") String xForwardedProto, 
         @HeaderParam("x-forwarded-for") String xForwardedFor, 
         @PathParam("infotype") String infoType) { 
        Response errorResponse = getErrorResponse(authorizationKey, request, xForwardedFor, xForwardedProto); 
        if (errorResponse != null) { 
         return errorResponse; 
        } 
        ... start work with infoType here ... 
    

    に動作します - サーバが正常に動作します - しかし、コードが入っています間違った場所(私はそれを新しいメソッドに追加する必要があります)だから、フィルターのメカニズムに移動したいと思います。

    ご協力いただきありがとうございます。

    (私はx-forwarded-protox-forwarded-forチェックは防弾ではありません知っているが、それは何よりも優れています。)更新

  • 答えて

    0

    : この作品、それが設定されることになったか、おそらくではありませんが:

    getFilterChainで
    final HttpServer server = new HttpServer(); 
    
    final NetworkListener networkListener = new NetworkListener(
        "secured-listener", 
        "0.0.0.0", 
        9191 
    ); 
    server.addListener(networkListener); 
    server.start(); 
    
    networkListener.getFilterChain().add(5, new BaseFilter(){ 
        @Override 
        public NextAction handleRead(FilterChainContext ctx) throws IOException { 
         return super.handleRead(ctx); 
        } 
    }); 
    System.in.read(); 
    

    お知らせ指数()(追加 - 。。それはSTOPアクションを返し原因フィルタはHttpServerFilter前にする必要があります

    +0

    興味深い、私がしようとし、これをあげるしかし、どのように「あなた」 'transport'あると! 「私の」奉仕rは接続されていますか? –

    +0

    更新いただきありがとうございます!今私は理解し始めている。 –

    関連する問題