作为一名.net开发人员,我正在玩java用于学习目的。
我正在尝试开发一些REST Web服务,我想保护它们。 In.net我使用基于令牌的身份验证,我猜与 OAuth1 类似。
在.net中,有许多库可供使用,建议不要自己存储用户凭据。所以我能够实现以下课程&界面: OAuthAuthorizationServerProvider &的 IAuthenticationTokenProvider 即可。 这包括salting,散列,验证令牌,令牌到期等。
在java中存储凭据和用户令牌的行业标准或推荐做法是什么?我找到了apache shiro和spring security,但我发现的是用户信息存储在文件中或硬编码的用户名和密码。
理想情况下,我想使用hibernate进行数据库工作。 我试图找出存储用户凭据和用户令牌等的最佳/推荐方式。
我正在努力不要推销我自己的",因为总是不推荐。但与此同时,我想使用尚未破解的正确加密和散列标准。
答案 0 :(得分:2)
我会推荐Spring Security。它是高度可插拔的,您可以实现所需的任何级别的安全性。
用户可以持久保存在数据库中。这是常见的做法。本教程介绍了基础知识:
http://www.baeldung.com/spring-security-authentication-with-a-database
加密密码也是一种好习惯。您可以实现所需的任何加密。您可能必须安装Oracle Java Encryption扩展。
你甚至可以添加双因素登录等......
您真的需要阅读有关Spring Security的更多信息。以下是参考资料:
https://docs.spring.io/spring-security/site/docs/5.0.0.RELEASE/reference/htmlsingle/