2

次のサーブレット コードで jetty 9 を使用して透過プロキシを正常に作成しました。

public class ProxyRewriteServlet extends ProxyServlet.Transparent {
   private static final String HOST = "192.168.1.20" // 'hidden' server
   private static final int PORT = 28000 // the port the server is listening to

   @Override
   protected URI rewriteURI(HttpServletRequest request) {
       URIBuilder builder = new URIBuilder()
        .setScheme("http").setHost(HOST).setPort(PORT)
        .setPath(request.getRequestURI());

      return builder.build();
   }

プロキシは、基本認証を必要とする既知のサーバー (192.168.1.20) に転送します。アドレスを使用したサーバーへの直接アクセスが機能しますhttp://admin:password@192.168.1.20/path。プロキシ経由のアクセスhttp://admin:password@proxy.from.above/pathも同様に機能します。

ただし、認証のためオーバーアクセスhttp://proxy.from.above/pathはできません。したがって、私は次のように補足rewriteURI()します。

builder.setUserInfo("admin", "password"); 

残念ながら、これは効果がなく、サーバーはブラウザーに資格情報の入力を求めます。

プロキシにユーザー情報を挿入する適切な方法はありますか? それとも、必ずクライアントから来る必要がありますか?

4

0 に答える 0