首页 > 解决方案 > 当一个简单的流氓客户端无论如何都可以窃取密码时,Oauth 中客户端密码的目的是什么?

问题描述

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

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

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

我知道我们可以采用两因素身份验证来防止这种情况。但是,我的问题是:如果密码窃取程序并不重要,为什么还要经历 OAUTH 授权/PKCE 流程中提到的客户端验证的所有麻烦?

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

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

标签: oauth-2.0oauthpkce

解决方案


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


推荐阅读