我目前正在使用 OpenID4Java 库通过 Java HttpServlets 实现 OpenID 依赖方 (RP) 和身份提供者 (IdP)。我在让两个 servlet 相互通信时遇到了麻烦。我相信我遇到的问题是更多地处理 Servlet 的行为方式,但是我已经包含了有关我的应用程序的信息,以便更好地了解正在发生的事情。
场景如下:
Servlet #1(我的 RP)向 Servlet #2(我的 IdP)发送请求,如下所示:
httpResp.sendRedirect(authReq.getDestinationUrl(true));
本质上 authReq = 带有各种 OpenID 特定参数的消息。通过调用 getDestinationUrl(true),它将请求编码为 url 以通过 GET 发送。
Servlet #2 在其 doGet 方法中捕获上述 GET。它解析信息,并以下列方式制作回复以发送回 Servlet #1:
字符串 responseText = processRequest(httpReq, httpResp);
httpResp.setContentType("text/html");
OutputStream outputStream = httpResp.getOutputStream();
//
outputStream.write(responseText.getBytes());
outputStream.close();
我的问题是,这个响应永远不会回到 Servlet #1。我希望当服务器 #1 收到来自 Servlet #2 的响应时,它的 doGet 或 doPost 方法会捕获该消息。然而,这两种情况都没有发生。
任何建议将不胜感激。
谢谢!