为什么 OAuth 中没有加密客户端密码?

Why isn't client secret encrypted in OAuth?

最近在研究OAuth服务器的实现。我注意到的一件事是所有服务器实现都没有在服务器端加密客户端机密。我知道它不应该是密码,但它被用作密码。如果是这样,我们为什么不加密它?

我唯一能想到的是它无法加密,因为 OAuth 服务器应该在 UI 上向客户端显示客户端机密。

P.S: 是属于Whosebug还是serverfault..?

这是一个实施决定,但只要授权服务器不使用 HSM 作为加密密钥,用驻留在同一文件系统上的另一个秘密来加密秘密就没有多大意义.

显示在GUI中绝对不是不加密的原因(因为服务器可以在显示之前解密它)甚至没有必要在[=21=中显示它](可以作为应用程序开发人员的输入提供)。

但也许您指的是单向哈希?在那种情况下,我同意授权服务器应该将这些客户端机密视为密码并对其进行哈希处理,或者至少提供这样做的选项。

但值得一提的是,客户端机密丢失时的危害较小,因为它们对于 client/AS 关系是独一无二的。暴露用户密码的坏处是,它们通常可以用来对付其他服务提供商(使用相同的 username/e-mail 地址)。这不适用于客户端机密,并且有人可能会争辩说,在很多情况下(RS 和 AS 是 "close"),能够访问客户端机密所在的后端已经过时了学习客户端机密本身的需要.