Oauth 2.0 在Oauth中,当一个简单的恶意客户端可以窃取密码时,客户端机密的目的是什么?

Oauth 2.0 在Oauth中,当一个简单的恶意客户端可以窃取密码时,客户端机密的目的是什么?,oauth-2.0,oauth,pkce,Oauth 2.0,Oauth,Pkce,这个问题以前没有问过,因为前提不同 客户端密码用于授权服务器验证用户正在使用实际客户端登录系统;不是黑客创建的恶意客户端 但是,恶意客户端不需要向服务器进行身份验证。如果用户在流氓客户端上提供用户名/密码,则黑客实际上已窃取了密码。然后,他可以来到实际客户机并使用凭据登录 我知道我们可以采用双因素身份验证来防止这种情况。然而,我的问题是:如果对密码窃取者来说真的不重要,为什么要像OAUTH授权/PKCE流中提到的那样进行客户端验证呢 最后,黑客可以利用网络抓取策略自动捕获来自实际客户端的数据。

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


客户端密码用于授权服务器验证用户正在使用实际客户端登录系统;不是黑客创建的恶意客户端

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

我知道我们可以采用双因素身份验证来防止这种情况。然而,我的问题是:如果对密码窃取者来说真的不重要,为什么要像OAUTH授权/PKCE流中提到的那样进行客户端验证呢


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

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

“客户机机密用于授权服务器验证用户正在使用实际的客户机登录到系统”--您在这里谈论的OAuth流是什么?顺便说一句,客户机密是针对“客户”的,比如应用服务器,而不是针对移动或网络的终端用户应用。这个秘密在这个“客户端”和授权服务器之间共享,并且,正如您的链接页面所说的,它永远不应该包含在最终用户的应用程序中。它的目的是确保只有注册的“客户”才能代表其最终用户获得代币。我知道,但实际上,客户授权有什么好处?如果一个黑客能够窃取密码,他只需登录,游戏就结束了。什么游戏结束了?客户端的秘密根本不存在,以防止未经授权的人登录,所以不要挂断了威胁。为了资源服务器的利益,客户机机密用于不可否认性。有了客户机机密,资源服务器就可以准确地知道客户机(=应用程序服务器)请求的任何给定令牌。这样,如果客户端未能对其令牌进行网关保护,以确保滥用或不负责任的最终用户流量永远不会到达资源服务器,则可以撤销客户端的授权。问题解决了——对于资源服务器!有史以来最好的答案谢谢:)你能回答这个问题吗,这样我就可以选择它作为最佳答案。这对像我这样的未来学习无趣的人是有益的。