将标头从一个应用程序发送到远程应用程序

时间:2014-07-16 22:28:25

标签: single-sign-on httpclient

我需要对我的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();

0 个答案:

没有答案