【问题标题】:proxy authentication using jetty使用码头的代理认证
【发布时间】:2015-12-07 10:16:51
【问题描述】:

我正在尝试找出是否可以使用 jetty 在 Java 中进行代理身份验证。我已经能够使用 jetty 进行基本和摘要式身份验证方案,并且在 Jetty 中有一些简单的方法可以使用伪代码设置这些身份验证方案,如下所示:

constraint = org.mortbay.jetty.security.Constraint();
constraint.setName(constraint.('__BASIC_AUTH'))
constraint.setRoles({'admin'});
constraint.setAuthenticate(true);
constraintMapping = ConstraintMapping();
constraintMapping.setConstraint(constraint);
constraintMapping.setPathSpec('/*');
securityHandler = SecurityHandler();
securityHandler.setUserRealm(myrealm);
securityHandler.setConstraintMappings(constraintMapping );

同样对于 DIGEST 身份验证,__BASIC_AUTH 可以替换为 __DIGEST_AUTH。我正在使用 HttpServlets 来处理请求/响应。但是,如果我想实现基于代理的身份验证,我该怎么做呢?

我是否需要使用 httpservlet 的 doGet() 并尝试进行身份验证并显式转发到另一个地址,或者是否有办法使用码头本身来设置基于代理的身份验证(或代理本地主机服务器),如上面的伪代码所示?

我能否获得一些代码帮助来执行基于代理的身份验证,以验证 HttpServlet 请求并将其转发到另一个 servlet/服务器?

【问题讨论】:

  • org.mortbay.jetty 的使用意味着您使用的是 ancient 版本的 Jetty,早在 EOL(生命终结)之后。 Jetty 项目于 2009 年移至 Eclipse 基金会,并将其包装更改为 org.eclipse.jetty

标签: java authentication servlets jetty proxy-server


【解决方案1】:

至于current version of Jetty (9.3.3.v20150827)Proxy-Authenticate 标头与 Servlet 约束系统的WWW-Authenticate 标头有任何关系。

从约束的角度来看,Servlet 规范或 Jetty 实现中没有内置任何内容来支持 Proxy-Authenticate 客户端标头。

但是,使用 Jetty 9.3.x,您可以使用 AsyncProxyServletAsyncProxyServlet.TransparentAsyncMiddleManServletAsyncMiddleManServlet.Transparent 以您自己的方式处理此 Proxy-Authenticate 标头。

要实现这一点,您首先要从其中一个扩展,然后覆盖 sendProxyRequest(HttpServletRequest clientRequest, HttpServletResponse proxyResponse, Request proxyRequest)

在您的sendProxyRequest() 版本中,查看Proxy-AuthenticateProxy-AuthorizeclientRequest 标头,并执行最适合您需要的基于代理的身份验证。

如果认证通过,则调用super.sendProxyRequest(clientRequest, proxyResponse, proxyRequest);

否则使用proxyResponse 发回质询响应。

【讨论】:

  • 感谢您让我知道这件事!所以看来我需要实现 sendProxyRequest 方法。然而,与在发送 HTTP 请求时自动调用的 doGet() 不同,如何从客户端调用此方法以及此代理服务器的 url 指定在哪里?另外,不知道proxy鉴权可以通过这种方式轻松选择basic还是digest作为scheme?
  • 我继续提交了一个增强请求,以寻求一种更好的方法,该方法可以被此行为覆盖 - bugs.eclipse.org/477201
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-27
  • 2014-03-17
  • 1970-01-01
  • 2012-11-22
  • 1970-01-01
  • 2015-04-19
相关资源
最近更新 更多