繁体   English   中英

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

[英]User authentication for web services in Java

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

  • 在服务器端添加具有用户名和密码的纯文本文件users 要求用户在每次请求时都发送用户名和密码,然后服务器针对文件对它们进行测试。

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

这种方法有意义吗? Java中是否有此方法的“现成可用”实现?

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

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

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

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

另外, 您应该真正阅读适用于Web应用程序的正确密码存储技术 确保您使用的是bcrypt之类的足够复杂的(又名缓慢的)哈希算法,并为每个密码赋予唯一的盐。 最后,通过使用HTTP摘要身份验证(正确)或使用基于SSL表单的身份验证(更好),确保凭据的传输是安全的。

例如,使用诸如Jersey的RESTful框架。 但是对于身份验证,您必须使用请求过滤器实现会话管理。 对于用户管理,您应该使用MySQL之类的数据库。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM