Java 为什么我们在SpringOAuth2.0中将客户机机密以纯文本形式存储在数据库中?
我是Spring OAuth 2.0的新手。我们希望为资源服务器使用“客户端凭据”授予类型。在实现此类型时,我们不确定是否在数据库中将“客户端ID”和“客户端机密”保持为纯文本。有人会破解这些客户端ID和客户端密码,如果我们将客户端密码存储为纯文本,则可能无法使用它们 请任何人告诉我们,是否有任何方法可以以加密格式保存这些值“客户ID”和“客户机密” Spring OAuth 2.0中是否有任何默认选项可用于编码和解码 请让我们知道是否有任何特定的原因将客户机密存储为纯文本Java 为什么我们在SpringOAuth2.0中将客户机机密以纯文本形式存储在数据库中?,java,spring,spring-mvc,spring-security,oauth-2.0,Java,Spring,Spring Mvc,Spring Security,Oauth 2.0,我是Spring OAuth 2.0的新手。我们希望为资源服务器使用“客户端凭据”授予类型。在实现此类型时,我们不确定是否在数据库中将“客户端ID”和“客户端机密”保持为纯文本。有人会破解这些客户端ID和客户端密码,如果我们将客户端密码存储为纯文本,则可能无法使用它们 请任何人告诉我们,是否有任何方法可以以加密格式保存这些值“客户ID”和“客户机密” Spring OAuth 2.0中是否有任何默认选项可用于编码和解码 请让我们知道是否有任何特定的原因将客户机密存储为纯文本 谢谢,您不能将客户端
谢谢,您不能将客户端密码保存为纯文本。 客户端机密不能解密。
只需使用org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder,它将使用算法加密客户端密码。您保存的数据用于验证客户端,因此您需要能够在服务器上读取它,这样每个黑客都可以攻击您的服务器。OAuth的设计方式是,存储的信息(authtoken)只能与发布它的服务一起使用。如果有人入侵您的服务器,您需要在从该入侵中恢复后重置此令牌。只需添加一个
PasswordEncoder
,就像您通常对user/password所做的那样。您好,我们遇到的问题是,如果我们可以在创建时使用“PasswordEncoder”对客户端密码进行编码,Spring OAuth 2库将通过获取编码的客户机机密来创建访问令牌。这意味着我们无法发现Spring OAuth 2.0库从数据库中获取编码的客户机机密并对其进行解码,然后生成访问令牌。我们也需要在资源服务器中使用此功能。请让我知道,在spring OAuth 2.0中有没有任何方法可以做到这一点,以便我们能够安全地为客户保密?谢谢