Jac*_*cob 5 javascript security oauth single-page-application
我一遍又一遍地阅读 OAuth2 规范,但我无法弄清楚一件事。没有客户端密钥的授权代码流(现在推荐用于单页应用程序)是否非常不安全,因为它很容易被用于网络钓鱼?让我解释:
现在,实际上,请求授权的客户端是一个网络钓鱼站点,不幸的是,用户无法识别该站点。传递到授权服务器的重定向 URL 指向恶意客户端,而不是合法客户端。客户端 ID 是公共信息,因此设置此类站点相当容易。
如果需要客户端密码会发生什么?
但是如果资源服务器不需要客户端密钥怎么办?
我是否遗漏了某些内容,或者这是正确的,并且没有什么可以使单页应用程序使用 OAuth2 更安全?
小智 11
资源服务器不需要授权码client_secret
,因为只有有效的客户端才能获取兑换授权码。
客户端不仅必须根据client_id
注册redirect_uri
到客户端的信息进行验证。注册 OAuth 客户端时,您应该需要一个允许与client_id
.
因此,如果恶意客户端发出请求,验证将会失败,因为只有在redirect_uri
允许的情况下才必须重定向。
OAuth 2.0 RFC 第 3.1.2.2 节下对此进行了详细说明https://www.rfc-editor.org/rfc/rfc6749#section-3.1.2.2