我有两个单独的Web应用程序。让我们说 app1 和 app2 。两者都托管在具有不同域的不同服务器中。
现在在app1中有一个链接。点击该链接后,我必须使用用户名和密码调用app2的登录页面并显示响应。但是在URL中不应显示用户名和密码。
当前方法:
现在我通过创建iframe并在查询字符串中传递用户名和密码参数来完成我的任务。
赞:www.app2.com/login.jsp?username = abc& password = xxx
通过点击以上网址,用户可以登录并显示主页。
必修方法
我想用用户名和密码作为帖子参数调用另一个应用程序的登录页面。我想在服务器端做所有我的工作而不透露登录凭据。
注意:我可以控制 app1 ,但我无法调整 app2 的代码。我正在使用JSP开发app1,struts 1.3。
这两款应用的用户名和密码都不同。 App1是我的应用程序,app2是第三方报告服务。
希望你明白我的观点!!
答案 0 :(得分:0)
您要求的是单点登录。
最好的方法是编写一个cookie,应用程序(而不是域)可以读取。在app1.domain.com中为domain.com编写cookie并在app2.domain.com中阅读相同内容
更新#1 - 示例.NET代码 - 虽然问题是针对Java,但下面应该有助于实现逻辑
FormsAuthentication.SetAuthCookie(Session["userName"].ToString(), false);
//Below code modifies the cookie's domain
System.Web.HttpCookie MyCookie = System.Web.Security.FormsAuthentication.GetAuthCookie(User.Identity.Name.ToString(), true);
MyCookie.Domain = "abc.com";
Response.AppendCookie(MyCookie);
Response.Redirect("http://subdomain.abc.com/");
答案 1 :(得分:0)
您可以使用post方法在其他页面中发送参数。为此,您可以将AJAX POST请求用于其他页面并获取该页面的响应。
答案 2 :(得分:0)
请参阅here...
给出的答案老实说,我会为此而努力......
ServletContext context = this.getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher("/otherurltoservlet");
// change your request and response accordingly like setting the parametrs, body etc
dispatcher.forward(request, response);