【发布时间】:2013-01-27 15:09:21
【问题描述】:
我想知道当用户在浏览器的视图源中看到硬编码的值时,是否有任何方法使用 JSF、JSTL 或 JSP 将用户 ID 和密码传递给另一个应用程序而不可见?
理想情况下,我想从 JSF 或 JSP 页面调用 Oracle 报告,那么如何通过不添加隐藏字段或输入字段来传递用户名和密码,这样当用户在浏览器中查看源代码时,他/她应该无法查看身份验证详细信息。
我可以添加类似的东西
Map map = new HashMap();
map.put("username", "SMITH");
map.put("password", "SMT");
FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
.put("reportParams", map);
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.redirect("http://server:8889/reports/rwservlet");
但不确定如何使用 url 传递地图或如何使用 JSTL 或在 JSF 页面中调用它。即使我作为参数传递,用户也可以看到参数值。
任何帮助都是非常值得赞赏的。
谢谢
【问题讨论】:
-
您是否阅读过单点登录 (SSO) 技术?您的应用程序永远无法以纯文本形式访问任何用户的密码,因此您无法将其发送给其他应用程序。然而,SSO 提供了一种不需要通过集中式身份验证点的方法。
-
“外部”应用程序是否在同一个 Web 容器中运行?
-
@AlonsoDominguez 我们目前没有使用 SSO。
-
@w4rumy 外部应用程序在同一个应用程序服务器中,但是在不同的 OC4J 实例上。谢谢
-
@Polppan 我自己已经猜到了,我只是建议您这样做,因为这是在不同 Web 应用程序之间共享身份验证凭据的最安全方式。
标签: java jsp jsf jstl oraclereports