首页 文章

Java中Web服务的用户身份验证

提问于
浏览
1

假设我有一个简单的Java服务器应用程序,它实现了一些Web( REST )服务 . 该应用程序在 Tomcat 中部署为 war . 现在我想添加用户身份验证,如下所示:

  • 在服务器端添加带有用户名和密码的纯文本文件 users . 用户需要在每个请求中发送用户名和密码,服务器会根据文件对其进行测试 .

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

这种方法有意义吗? Java中有这种方法的“随时可用”实现吗?

4 回答

  • 1

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

    我的建议是使用Spring Security . 看一下HTTP摘要认证的this示例 .

    另一种方法可能是使用servlet容器为您完成此操作 . 看看here的摘要和基于表单的身份验证技术 .

    另外, you should really read up on proper password storage techniques for web applications . 确保你使用像bcrypt这样足够复杂(又名慢)的散列算法,并为每个密码赋予一个独特的盐 . 最后,通过使用HTTP摘要式身份验证(好的)或使用基于SSL表单的身份验证(更好),确保凭据的传输是安全的 .

  • 1

    Spring Security?这是一种保护Web应用程序的非侵入性方式,并且可以非常灵活地存储数据 - 即纯文本文件,xml或用户名和密码数据库 .

  • 3

    是的,有很多现有的良好身份验证解决方案,从BASIC(通过SSL),OAuth,Kerberos,Spring Security等 . 我建议对WS-Security主题进行研究,因为有很多层(容器,过滤器,应用程序本身) )可以进行身份验证 .

  • 1

    例如,使用像Jersey这样的RESTful框架 . 但对于身份验证,您必须使用请求筛选器实现会话管理至于用户管理,你应该使用像MySQL这样的数据库 .

相关问题