将登录信息从 Struts Action 传递到不同应用程序的安全方法

Posted

技术标签:

【中文标题】将登录信息从 Struts Action 传递到不同应用程序的安全方法【英文标题】:Secure method of passing sign-in information from a Struts Action to a different app 【发布时间】:2017-10-19 15:14:29 【问题描述】:

我有一个应用程序,它允许用户登录,然后将他们的登录信息传递给他们选择的应用程序。所有应用程序都是用 Java 编写的,使用 Struts 2 并在 Websphere 上运行。传递登录信息的最安全方式是什么?我可以使用 HTTPS 在 URL 中传递它,但这仍然会在浏览器历史记录中留下可用的信息。

编辑:

登录应用程序实际上调用了一个网络服务,该服务注册用户,收集他们的个人信息,验证他们的身份并将信息传递回登录应用程序。 Web 服务存储所有注册信息。我想将所有注册信息传递给应用程序,这样用户就不必重新输入它,并确保网络服务存储的信息与应用程序中存储的信息相同。

【问题讨论】:

【参考方案1】:

您应该将这两个应用程序都配置为使用单点登录。

这是 Websphere 的教程。

http://www.redbooks.ibm.com/redpapers/pdfs/redp4192.pdf

【讨论】:

我已经澄清了我需要做什么。单点登录会起作用吗?阅读材料后,我并不清楚如果登录独立于 Websphere 应用程序完成并且我不确定是否可以通过单点登录传递所有注册信息。 @ponder275 SSO的重点是认证一次,使用每个应用的授权权限。不要以明确的方式转移您的授权信息。【参考方案2】:

如果您通过 https 传递登录信息,这是一种安全的方式。但是不要在 url 中传递它。使用 http post 方法将此信息提交给应用程序。但是因为您使用 Web 服务来注册/验证用户,所以您需要使用 http 客户端等从您的应用程序调用此 Web 服务。如果您从客户端调用服务,您的应用程序永远不知道用户是否已注册/验证。

建议使用一些安全框架,例如 Spring Security,它允许使用不同的方法进行身份验证/注册/授权。它需要通过spring plugin 将struts2 与spring 集成。

其他请参阅How to integrate Spring Security and Struts2。或阅读本书Spring Security 3.x Cookbook by Anjana Mankale。

【讨论】:

以上是关于将登录信息从 Struts Action 传递到不同应用程序的安全方法的主要内容,如果未能解决你的问题,请参考以下文章

struts2 中如何在action之间传递对象。。

struts2如何实现弹出action返回的错误信息。

如何将参数从JSP传递给Struts 2动作

Struts 2 实现登录以及显示信息

如何将文本字段数据从 Struts 2 中的 ajax 操作传递到原始调用 .jsp?

Struts2的Action(简单讲解版)