当一个简单的恶意客户端无论如何都可以窃取密码时,Oauth 中客户端密码的目的是什么?

What is the purpose of client secret in Oauth when a simple rogue client can steal passwords regardless?

这个问题之前没有问过,因为前提不同

客户端密码用于授权服务器验证用户是否使用ACTUAL客户端登录系统;不是黑客创建的流氓客户端

但是, 恶意客户端不需要向服务器进行身份验证。如果用户在流氓客户端上提供他的 username/password,黑客实际上是 窃取了密码 。然后他可以访问 ACTUAL 客户端 并使用凭据登录。

我知道我们可以使用双因素身份验证来防止这种情况。但是,我的问题是:如果 OAUTH Authorization/PKCE 流程中提到的客户端验证对密码窃取者来说并不重要,为什么要经历所有这些混乱?

https://auth0.com/docs/flows/authorization-code-flow-with-proof-key-for-code-exchange-pkce

最后,黑客可以使用网络抓取策略自动从实际客户端捕获数据。

客户端密码根本不存在以防止未经授权的人登录,所以不要被那个威胁挂断。在使用它的 OAuth 流程中,为了资源服务器的利益,客户端机密用于不可否认性。有了客户端机密,资源服务器就可以确切地知道客户端(==应用程序服务器)请求了任何给定的令牌。这样,如果客户端未能正确保护其令牌并代理其用户的请求,以确保滥用或不负责任的最终用户流量永远不会到达资源服务器,则可以确定地识别客户端并撤销其授权.或者超过SLA可以临时限速等问题解决--资源服务器!