我需要对我的Portal实施单点登录。我已经完成了Portal端SSO代码,现在我需要编写一个测试应用程序。我需要在不同于Portal的服务器上托管测试应用程序。测试应用程序将在请求标头中发送USERID,Portal将读取并执行登录。由于这两个应用程序在不同的服务器上运行,我无法发布数据。我在某处读到Apache HttpClient可以帮助我实现这一目标。我写了测试应用程序代码,它执行SSO并返回HttpResponse。问题是我不明白如何在SSO完成后将用户带到Portal配置文件页面。在SSO完成后写下面的代码(httpClient.execute()),如果我做reaponse.redirect(),我得到身份验证错误页面。
String param = request.getParameter("USERID");
HttpClientContext context = HttpClientContext.create();
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpPost = new HttpGet(portal_url);
httpPost.setHeader("USERID", param);
HttpResponse httpResponse = httpClient.execute(httpPost, context);
HttpEntity entity1 = httpResponse.getEntity();
EntityUtils.consume(entity1);
Header headers[] = httpResponse.getAllHeaders();
for (Header header : headers) {
response.addHeader("Set-Cookie", header.getValue());
}
response.setHeader("Content-Type", "text/html");
response.setHeader("USERID", param);
response.sendRedirect("/auth/profile/viewMyProfile");
response.flushBuffer();