【问题标题】:Pass Username and Password from JSF or JSP to Oracle Reports将用户名和密码从 JSF 或 JSP 传递到 Oracle Reports
【发布时间】: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


【解决方案1】:

在 Oracle Report 服务器中,可以通过以下方式在 cgicmd.dat 文件中提供身份验证详细信息

myconn:    userid=scott/tiger@DB report=myreport.jsp %*

并在将参数从 JSF 或 JSP 传递到 Oracle 报告时使用 myconn。这样可以避免用户名或密码的硬编码。

【讨论】:

  • 我会给你一个 +1 来寻找一个不暗示以纯文本形式传递密码的解决方案,很好的发现!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多