我試圖打開這個URI處理認證相關的中間重定向與ApacheHttpClient
https://some-host/a/meta? (this url is passed to proxi.jsp page)
..但它重定向到身份驗證服務(上HTTPS)的彈出式菜單的用戶名和密碼箱...如果上瀏覽器..然後它需要你鍵入證書..然後它返回到我試圖打開並顯示內容的第一個鏈接...所以我想知道,當這個中間重定向到身份驗證服務發生..我如何通過代碼輸入我的用戶名和密碼到該彈出窗口..我試圖使用Apache HttpClient做到這一點...
這是正在請求我proxi.jsp代碼..
<%@ page language="java" import="
java.util.Collection,
org.apache.commons.httpclient.HttpClient,
org.apache.commons.httpclient.UsernamePasswordCredentials,
org.apache.commons.httpclient.auth.AuthScope,
org.apache.commons.httpclient.methods.GetMethod"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%
try {
String a_Url = request.getParameter("url") ;
HttpClient client = new HttpClient();
client.getState().setCredentials(
new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, "realm"),
new UsernamePasswordCredentials("test", "pass")
);
GetMethod get = new GetMethod(a_Url);
get.setDoAuthentication(true);
try {
int status = client.executeMethod(get);
out.println(status + "\n" + get.getResponseBodyAsString());
} finally {
get.releaseConnection();
}
} catch (Throwable t) {
t.printStackTrace();
}
%>
這是我收到的錯誤: -
org.apache.commons.httpclient.InvalidRedirectLocationException: Invalid redirect
location: https://login.xyz.com/13/smt
d.scc?TYPE=16&REALM=-SM-Documentum%20
uGVx6wOk1daI3&TARGET=-http%3A%2F%2Fsome-hid%3D10
at org.apache.commons.httpclient.HttpMethodDirector.processRedirectRespo
nse(HttpMethodDirector.java:619)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMe
thodDirector.java:179)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
a:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
a:323)
at org.apache.jsp.proxi_jsp._jspService(org.apache.jsp.proxi_jsp:64)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper
.java:389)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:4
86)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511
)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:3
90)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.jav
a:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:1
82)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:7
65)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(Normal
RewrittenUrl.java:213)
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.j
ava:171)
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:14
5)
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewri
ter.java:92)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewrit
eFilter.java:381)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainI
nvocation.java:67)
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilte
rPipeline.java:122)
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:110)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:3
88)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.jav
a:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:1
82)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:7
65)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHand
lerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.
java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:1
52)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:53
6)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpCo
nnection.java:915)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.ja
va:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.j
ava:582)
Caused by: org.apache.commons.httpclient.URIException: Invalid query
at org.apache.commons.httpclient.URI.parseUriReference(URI.java:2049)
at org.apache.commons.httpclient.URI.<init>(URI.java:147)
at org.apache.commons.httpclient.HttpMethodDirector.processRedirectRespo
nse(HttpMethodDirector.java:601)
... 44 more
,如果我嘗試這個URL粘貼
https://login.xyz.com/9]&AUTHREASON=0&[email protected]
回到瀏覽器,然後我得到一個彈出窗口進行身份驗證,如果我在該窗口中輸入用戶名和密碼,那麼我將獲得我正在查找的實際內容。 是否有任何標題需要在proxi.jsp頁面中傳遞。因爲在頁面中傳遞用戶名和密碼不是實現它的最好方法..或者其他任何方式。任何建議將不勝感激..
您是否知道它是否正在使用Basic Auth? – Sai
@Sai,這是什麼意思? – ferhan
看看http://en.wikipedia.org/wiki/Basic_access_authentication – Sai