在 Java 中存储用户凭据的推荐做法是啥? [关闭]
Posted
技术标签:
【中文标题】在 Java 中存储用户凭据的推荐做法是啥? [关闭]【英文标题】:What is the recommended practice for storing user credentials in Java? [closed]在 Java 中存储用户凭据的推荐做法是什么? [关闭] 【发布时间】:2018-08-22 13:19:23 【问题描述】:作为一名 .net 开发人员,我正在使用 java 进行学习。
我正在尝试开发一些 REST Web 服务,并且我想保护它们。 In.net 我使用基于令牌的身份验证,我猜类似于 OAuth1。
在 .net 中,有许多库可供使用,建议不要自己存储用户凭据。所以我能够实现以下类和接口:OAuthAuthorizationServerProvider & IAuthenticationTokenProvider。 这需要处理加盐、散列、验证令牌、令牌过期等。
在 java 中存储凭据和用户令牌的行业标准或推荐做法是什么?我找到了 apache shiro 和 spring security,但我发现要么是存储在文件中的用户信息,要么是硬编码的用户名和密码。
理想情况下,我想使用休眠进行数据库工作。 我正在尝试找出存储用户凭据和用户令牌等的最佳/推荐方式。
我尽量不要“自己动手”,因为始终不建议这样做。但同时,我想使用尚未被破坏的正确加密和散列标准。
【问题讨论】:
例如,在 .NET 中有一个 UserManager 基类,我可以从中继承,然后我需要重写几个方法和属性,它将为我处理存储、密码加密、加盐等. 【参考方案1】:我会推荐 Spring Security。它是高度可插拔的,您可以实现所需的任何安全级别。
用户可以保存在数据库中。这是常见的做法。本教程介绍了基础知识:
http://www.baeldung.com/spring-security-authentication-with-a-database
加密密码也是一种很好的做法。您可以实施任何您想要的加密。您可能需要安装 Oracle Java 加密扩展。
您甚至可以添加 2 因素登录等...
您确实需要阅读有关 Spring Security 的更多信息。这是参考:
https://docs.spring.io/spring-security/site/docs/5.0.0.RELEASE/reference/htmlsingle/
【讨论】:
谢谢,这是一个好的开始。但我真正在寻找的是更适合生产的东西。例如,在 .net 中,有一些类可以处理存储用户、密码、salt 等并进行加密等等。使用 Spring 的东西,似乎我有创建函数来做到这一点。我只是在想可能有一些社区/spring/oracle 课程或项目已经完成了大部分工作。正如你提到的,这很常见,所以我重做所有这些是没有意义的。 我发现了一些看起来像是我在 Spring Security 项目中寻找的类。谢谢。以上是关于在 Java 中存储用户凭据的推荐做法是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章