为什么不在OAuth中加密客户端密码?

问题描述:

我一直在研究最近的OAuth服务器实现。我注意到的一件事是所有的服务器实现都不加密服务器端的客户端密钥。我明白,它不应该是一个密码,但它被用作密码。如果是这种情况,为什么我们不加密呢?为什么不在OAuth中加密客户端密码?

只有我能想到的是,它不能被加密,因为OAuth的服务器应显示的客户端秘密UI上的客户端。

P.S:它是否属于计算器或serverfault ..?

这是一个实现决策,但只要认证服务器不使用加密密钥的HSM,它没有一个整体非常有意义的秘密与驻留在同一文件系统另一个秘密加密。

在GUI中显示它绝对不是不加密它的原因(因为服务器可以在显示它之前解密它),甚至不需要在UI中显示它(可以通过应用程序提供输入开发者)。

但是,也许你指的是单向散列?在这种情况下,我同意授权服务器应该将这些客户机密作为密码并对其进行散列,或者至少提供这样的选项。

但值得一提的是,虽然客户端机密可以视为丢失时不那么有害的,因为它们是唯一的客户端/ AS关系。公开的用户密码的坏处是它们通常可以用于其他服务提供商(使用相同的用户名/电子邮件地址)。这并不适用于客户机密,有人可能会争辩说,在许多情况下(RS和AS“关闭”)能够访问客户机密所在的后端,而不再需要自己学习客户机密。

+0

ž//是的,我的意思是单向散列。 – Moon