【发布时间】:2016-06-12 01:15:48
【问题描述】:
我是 Spring OAuth 2.0 的新手。我们想为我们的资源服务器使用“客户端凭据”授权类型。在实现此类型时,我们不确定是否将“客户端 ID”和“客户端密钥”作为纯文本在数据库中维护。有人会破解这些客户端 ID 和客户端密码,如果我们将客户端密码存储为纯文本,可能会错过使用它们。
谁能告诉我们是否有办法以加密格式保留这些值“客户端 ID”和“客户端秘密”?
Spring OAuth 2.0 中是否有任何默认选项可以对其进行编码和解码?
请告知我们是否有任何特定原因将客户端密码存储为纯文本?
谢谢,
【问题讨论】:
-
您保存的数据用于对客户端进行身份验证,因此您需要能够在服务器上读取它,这样每个入侵您的服务器的人都可以。 OAuth 的设计方式是,存储的信息(authtoken)只能用于为其颁发它的服务。如果有人入侵了您的服务器,您需要在从该攻击中恢复后重置此令牌。
-
只需添加一个
PasswordEncoder,就像您通常对用户/密码所做的那样。 -
嗨,我们被卡住的是,如果我们可以在创建时使用“PasswordEncoder”对客户端密码进行编码,Spring OAuth 2 库将通过获取编码的客户端密码来创建访问令牌。意思是我们无法发现 Spring OAuth 2.0 库从数据库中获取编码的客户端密码并对其进行解码,然后它们会生成访问令牌。我们在资源服务器中也需要这个东西。请让我知道在春季 OAuth 2.0 中有什么方法可以做到这一点,以便我们可以保护客户端的安全吗?谢谢,
标签: java spring spring-mvc spring-security oauth-2.0