我们需要能够从基础应用程序(BaseApp)启动新应用程序(NewApp)。 BaseApp和NewApp的登录凭据相同,因为它们使用相同的标识存储。 BaseApp和NewApp位于不同的技术堆栈上,都是Web应用程序。它们托管在不同的服务器上。 NewApp为Web访问提供基本的Auth。
如何使用java脚本从BaseApp上的链接启动NewApp。我希望能够注入Basic Auth凭证。
我尝试过使用xmlHTTPRequest,但它似乎更倾向于调用REST服务并处理获取的数据而不是启动URL。 使用java脚本window.open(url)不允许我注入授权头!
我还能探索什么?
其他信息: BaseApp的会话cookie不适用于NewApp。当我们首次在BaseApp上完成Basic Auth时,它会生成一个需要使用的新Session Cookie。 通过xhr,我们可以为NewApp调用URL(使用Basic Auth)。这将返回带有会话cookie的响应。 我无法弄清楚的问题是,如何在浏览器的新窗口/选项卡上呈现响应。
答案 0 :(得分:2)
最简单的解决方案是使用以下网址调用新窗口
http://<user>:<pass>@newapp
但这不是一个好的解决方案,因为您会看到纯文本的凭据。您最好尝试以下解决方案之一:
http://newapp?JSESSIONID=kjasbfkji877786sdf
之类的网址。
所以在案例1.2中。 2.你应该做以下事情:
var XMLReq = new XMLHttpRequest();
XMLReq.open("GET", "url", asynchronous?, "user", "password");
XMLReq.send(null);
案例1.2。您需要为后续调用提供额外的处理程序:
XMLReq.onload = function() {
window.open('http://NewApp?JSESSIONID='+XMLReq.getResponseHeader('Cookie'));
// note that 'JSESSIONID' depends on your backend implementation, this example is made for java backend
}
如果是2,那就是
XMLReq.onload = function() {
window.open('http://NewApp');
}
在这种情况下,最好的解决方案是OAuth或OpenID,但这取决于您的用例和系统环境,如果目前不支持OAuth或OpenID,则可能需要更复杂的后端实现。