我正在开发一个供内部使用的 Web 应用程序,该应用程序由对另一个远程服务器的许多 Web 服务请求驱动。内部站点维护自己的 session ,通过用户名/密码凭据进行身份验证,这些凭据本身由 Web 服务支持(即我们进行远程身份验证调用来验证内部站点的登录)。 Web 服务请求还需要使用这些相同的凭据进行身份验证。
我们希望这些 Web 服务请求能够保持无状态,这意味着在每个身份验证请求中传递凭据。问题是以安全的方式记住要使用的凭据(在初始登录期间输入的凭据)。我不知道有什么真正安全的方法来存储密码以供以后重复使用 - 对它进行哈希处理会牺牲我们再次使用它的能力。我们能做的最好的事情就是在 session 范围内对其进行编码,并希望没有恶意开发人员会尝试在线程转储或其他东西中捕获它。
是否有更好的解决方案来解决我所缺少的问题?我是否对在内存中存储编码密码的风险过于偏执,或者我们对该项目的方法是否有缺陷?
最佳答案
我建议使用基于 token 的身份验证,将 token 传递给用户以进行廉价的动态用户验证。一种实现是生成一个传递给用户进行 session 管理的 cookie。
关于java - 安全存储重复 Web 服务调用的凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11566761/