使用码头进行代理身份验证
proxy authentication using 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 来处理 requests/responses。但是,如果我想实现基于代理的身份验证,我该怎么做呢?
我是否需要使用 httpservlet 的 doGet() 并尝试进行身份验证并显式转发到另一个地址,或者有没有办法使用码头本身来设置基于代理的身份验证(或代理本地主机服务器),如伪代码所示多于?
我能否获得一些代码帮助来执行基于代理的身份验证,以验证 HttpServlet 请求并将其转发到另一个 servlet/server?
至于 current version of Jetty (9.3.3.v20150827),Proxy-Authenticate
header 与 WWW-Authenticate
没有任何关系 header表示Servlet约束系统。
从约束的角度来看,Servlet 规范或 Jetty 实现中没有内置任何内容来支持 Proxy-Authenticate
客户端 header。
但是,使用 Jetty 9。3.x 您可以使用 AsyncProxyServlet
, AsyncProxyServlet.Transparent
, AsyncMiddleManServlet
, or AsyncMiddleManServlet.Transparent
以您自己的方式处理此 Proxy-Authenticate
header。
为此,您将从其中一个扩展开始,然后覆盖 sendProxyRequest(HttpServletRequest clientRequest, HttpServletResponse proxyResponse, Request proxyRequest)
。
在您的 sendProxyRequest()
版本中,查看 clientRequest
header 的 Proxy-Authenticate
和 Proxy-Authorize
,并执行最适合的基于代理的身份验证适合您的需要。
如果认证通过,则调用super.sendProxyRequest(clientRequest, proxyResponse, proxyRequest);
。
否则使用proxyResponse
发送回质询响应。
我想知道是否可以使用码头在 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 来处理 requests/responses。但是,如果我想实现基于代理的身份验证,我该怎么做呢?
我是否需要使用 httpservlet 的 doGet() 并尝试进行身份验证并显式转发到另一个地址,或者有没有办法使用码头本身来设置基于代理的身份验证(或代理本地主机服务器),如伪代码所示多于?
我能否获得一些代码帮助来执行基于代理的身份验证,以验证 HttpServlet 请求并将其转发到另一个 servlet/server?
至于 current version of Jetty (9.3.3.v20150827),Proxy-Authenticate
header 与 WWW-Authenticate
没有任何关系 header表示Servlet约束系统。
从约束的角度来看,Servlet 规范或 Jetty 实现中没有内置任何内容来支持 Proxy-Authenticate
客户端 header。
但是,使用 Jetty 9。3.x 您可以使用 AsyncProxyServlet
, AsyncProxyServlet.Transparent
, AsyncMiddleManServlet
, or AsyncMiddleManServlet.Transparent
以您自己的方式处理此 Proxy-Authenticate
header。
为此,您将从其中一个扩展开始,然后覆盖 sendProxyRequest(HttpServletRequest clientRequest, HttpServletResponse proxyResponse, Request proxyRequest)
。
在您的 sendProxyRequest()
版本中,查看 clientRequest
header 的 Proxy-Authenticate
和 Proxy-Authorize
,并执行最适合的基于代理的身份验证适合您的需要。
如果认证通过,则调用super.sendProxyRequest(clientRequest, proxyResponse, proxyRequest);
。
否则使用proxyResponse
发送回质询响应。