Oauth2单页应用程序安全注意事项



我正在阅读网站Oauth.com,试图了解如何在单页应用程序中实现安全性,这时我发现了以下语句:

"没有客户端机密的授权代码授予的唯一安全方法是使用"state"参数并将重定向URL限制为受信任的客户端。由于没有使用机密,因此除了使用注册的重定向URL之外,没有其他方法可以验证客户端的身份">

如果我没有正确设置,他说我可以使用注册的重定向URL来验证我的SPA的身份。

问题1:如果我将授权代码重定向到url(web服务器(,我如何将其(或访问令牌,或受保护的资源(放回在浏览器中运行的SPA中?

问题2:在这个注册的url中可以进行什么样的检查来验证我的SPA身份?

Q1。您将收到一个授权代码作为查询参数中的登录响应。然后将其交换为访问令牌。然后使用访问令牌调用API。

Q2.使用HTTPS来证明您拥有重定向URI。使用PKCE在运行时创建一次性使用机密。

矿山资源

也许这些资源会让你有一个更清晰的想法——随时发布任何后续问题。。

  • SPA消息工作流
  • SPA教程+代码示例

授权码作为code查询参数包含在URL中,因此您可以从SPA访问它(例如使用window.location.search(。这将取决于OAuth2提供者,您是否能够将该代码交换为SPA中的访问令牌。

如果您使用web服务器来执行代码->代币交换,您需要将代币放入您的SPA可以访问的数据库中。

OAuth.com的引用提到了两种安全措施,state参数和注册的重定向URL。这可以防止两种不同的攻击:

  1. state参数可防止攻击者使用带有被盗授权码的URL来检索受害者用户的访问令牌,并将其与攻击者的帐户关联。通过验证URL中的state参数与您提供给授权服务器的state参数相同,可以确保重定向是由授权服务器生成的,而不是由攻击者生成的。

  2. 注册的重定向URL阻止攻击者使用您的客户端ID,但将用户发送到授权URL,授权后,该URL会将用户重定向到攻击者的web服务器而不是您的web服务器,从而允许攻击者检索用户的访问令牌。对于已注册的重定向URL,授权服务器将重定向到您控制的预注册重定向URL,而不会重定向到攻击者的web服务器。

除了自己实现此流,特别是对于SPA,它在OAuth授予类型方面有限制,另一种选择是使用托管OAuth服务。我工作的Xkit是为处理SPAs而设计的,它将所有OAuth流(包括安全考虑因素(从代码中移出。

相关内容

  • 没有找到相关文章

最新更新