为什么 OAuth2 在授权标头中要求客户端凭据?

信息安全 oauth
2021-09-03 06:33:03

OAuth 2.0 授权框架的第 2.3.1 节中,它指出:

授权服务器必须支持 HTTP Basic 身份验证方案,以对已获得客户端密码的客户端进行身份验证。

它继续说:

不推荐使用这两个参数在请求正文中包含客户端凭据,并且应该受到限制...

为什么会这样including the client credentials in the request-body using the two parameters is not recommended

我能想到任何理由。如果用户凭证在请求正文中以纯文本形式出现就足够了,为什么它对客户端凭证不够好?尽管基本授权需要编码,但客户端凭据仍为纯文本。我错过了什么吗?

2个回答

一个可能的原因是请求参数通常对 Web 应用程序可用,而根据平台的不同,用于基本身份验证的密码可能会被 HTTP 服务器从 HTTP 服务器变量集中删除,以防止它对半受信任的应用程序可用.

可能是为了防止在身份验证不成功的情况下处理请求正文,例如401 错误

不过,我不确定这与发布用户凭据的一般情况有何不同。除了可能(在 OAuth 2.0/OIDC 上下文中)令牌端点可能是众所周知的/可发现的。