在 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 中存储用户凭据的推荐做法是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 JWT 令牌中存储用户权限的最佳做法是啥?

桌面应用程序凭据存储的最佳做法?

在我们的应用程序中保留/验证用户登录凭据的最佳方法是啥

在 Redis 中存储 JWT 令牌的标准做法是啥?

使用 Java 在 PostgreSQL 中存储时间的最推荐方法是啥?

存储推送通知的最佳做法是啥?离子 3