Javascript OAuth2无客户机密–;可能的网络钓鱼?
我一直在反复阅读OAuth2规范,但我想不出一件事。没有客户端密码的授权码流(现在推荐用于单页应用程序)不是非常不安全,因为它很容易被用于钓鱼吗?让我解释一下:Javascript OAuth2无客户机密–;可能的网络钓鱼?,javascript,security,oauth,single-page-application,Javascript,Security,Oauth,Single Page Application,我一直在反复阅读OAuth2规范,但我想不出一件事。没有客户端密码的授权码流(现在推荐用于单页应用程序)不是非常不安全,因为它很容易被用于钓鱼吗?让我解释一下: 客户端将资源所有者重定向到授权服务器,并传递重定向URL和客户端ID 资源所有者批准请求,授权服务器将其重定向到给定的重定向URL并传递授权代码 现在,在现实中,请求授权的客户端是一个钓鱼网站,不幸的是,用户无法识别。传递到授权服务器的重定向URL指向恶意客户端,而不是合法客户端。客户端ID是一个公共信息,因此建立这样的站点相当容易 如
我是否遗漏了什么,或者这是正确的,并且没有任何方法可以使OAuth2与单页应用程序一起使用更安全?资源服务器不需要
客户机密钥,因为只有有效的客户机才能获得赎回授权码
必须根据注册到客户端的客户端id
和重定向uri
对客户端进行验证。注册OAuth客户端时,您应该需要一个允许重定向uri的列表,这些uri允许与客户端id一起使用
因此,如果恶意客户端发出请求,它将无法通过验证,因为只有在允许使用redirect\u uri
时才能重定向
这在OAuth 2.0 RFC第3.1.2.2节中有详细说明,SPA上的客户端机密也不安全,每个人都可以复制它,正如我们都知道的,错误使用机密可能导致服务器间安全通信的相同机密的2倍,同时为SPA的每个人公开,因此还有为什么不建议在SPA中使用客户端机密