我们有一个用.NET编写的webapp,它使用NTLM进行SSO。我们正在用Java编写一个新的webapp,它将与原始应用程序紧密集成。遗憾的是,Java不支持执行NTLM身份验证的服务器部分,而且我能找到的唯一库需要IT部门允许过多的设置。
为了解决这个问题,我想出了一个远程认证方案,可以跨应用程序工作,并希望你的意见。它不需要非常安全,但同时也不容易被打破。
答案 0 :(得分:1)
1)将预共享密钥存储在文件(甚至是程序文件)中是影院而非安全。
2)您的令牌(数据库中的随机数)应设置为过期。我建议在一次尝试后过期,但也应设置时间限制。否则,你最终可能会得到数以千计的剩余令牌,这些令牌可以提供正确的猜测。
3)如果您只需要从Java工具验证是否允许访问,则可以使用公钥加密而不是预共享密钥。这样你只需要保护私钥。当然,保护包括:“不要将其放在您正在保护的用户可访问的文件中”,如果没有这种保护,这种方法与预共享密钥没有区别。
4)似乎我可以轻松修改java工具以忽略授权步骤,只执行您要保护的任何敏感任务。
把所有这些都用在盐中,因为我对Java和.NET知之甚少。我对密码学知之甚少。