1

假设我有一个简单的 Java 服务器应用程序,它实现了一些 web ( REST) 服务。应用程序部署warTomcat. 现在我想添加用户身份验证如下:

  • users在服务器端添加一个包含用户名和密码的纯文本文件。用户需要在每个请求中发送用户名和密码,服务器会根据文件对它们进行测试。

  • 为了防止以明文形式发送密码,我正在考虑单向加密,就像/etc/passwd. 因此,用户将被要求在发送请求之前加密他们的密码。

这种方法有意义吗?Java中是否有这种方法的“即用型”实现?

4

4 回答 4

3

春天安全?这是一种保护 Web 应用程序的非侵入式方法,并且在数据存储方式方面非常灵活 - 即纯文本文件、xml 或用户名和密码数据库。

于 2012-09-24T14:24:04.367 回答
1

Yes, there is a lot of existing good authentication solutions, from BASIC (via SSL), OAuth, Kerberos, Spring Security etc. I suggest making a research on WS-Security topic, as there are many layers (container, filters, application itself) where the authentication can take place.

于 2012-09-24T14:31:10.930 回答
1

Use a RESTful framework like Jersey for example. But for authentication you must implement session management with request filters. As for users management you should use a database like MySQL.

于 2012-09-24T14:29:42.390 回答
1

有很多方法可以剥这只猫的皮。首先,您可能希望使用摘要式身份验证或基于 SSL 表单的身份验证,因为依赖客户端哈希可能会受到重放攻击。

我的建议是使用 Spring Security。看看这个HTTP 摘要认证的例子。

另一种方法可能是使用 servlet 容器为您完成此任务。在这里查看摘要和基于表单的身份验证技术。

此外,您应该真正阅读 Web 应用程序的正确密码存储技术。确保您使用的是足够复杂(又名缓慢)的散列算法,例如 bcrypt,并为每个密码提供唯一的盐。最后,确保凭证的传输是安全的,要么使用 HTTP 摘要身份验证(好的),要么使用基于 SSL 表单的身份验证(更好)。

于 2012-09-24T14:28:11.433 回答