浏览器应用程序和auth令牌再次出现

时间:2016-12-14 20:48:42

标签: oauth single-page-application access-token identityserver3 identityserver4

我一直在审查我们应该如何在我们的浏览器应用程序(SPA)中处理OAuth身份验证,并且有大量文章使得它真的让人感到困惑......我真的错过了一些具体和最佳实践非常简单的设置指南。

我们有这个使用IdSvr3发布的令牌保护的ASP.NET Web API 2。到现在为止还挺好。适用于本机客户端和服务器应用程序。

现在浏览器的内容......查看JavaScriptImplicitClient这样的示例,它使用oidc-client-js库来使用隐式流检索令牌。令牌存储在浏览器中,可以使用JavaScript访问,并且可以通过XSS攻击进行打开。 为了避免这种情况,建议指示将令牌存储在cookie中,然后设置机制以防止CSRF攻击。

看起来很简单,但是什么设置了这个cookie?

  • 是IdSvr吗?没有意义,因为它是需要cookie的API。

  • 是API吗?在Implicit Flow登录期间,用户是否会重定向到设置会话的API,然后使用Set-Cookie标头将用户重定向回SPA?然后,cookie将在后续请求中出现在API中。

  • 第三种解决方案?有些人提到创建第二个“API”来代理对“真实”API的请求,但设置了auth标头。

您是否有任何此类设置的样本,或者您是否可以提供一些有关如何进行此操作的提示?

1 个答案:

答案 0 :(得分:1)

就个人而言,大多数情况下由于XSS而避免使用令牌的Web存储似乎会加剧一些。有一个重要的问题,如果您的应用程序容易受到XSS攻击,那么此漏洞的影响会因为您泄漏令牌而显着增加,或者即使您没有在那里存储令牌而且您已经完全失败了麻烦的类型。

我比较了一些在Web浏览器应用程序中存储访问令牌的方法的优缺点,您可以check in this answer to a related question

最后,每个案例最终都有自己的细节,这可能会在一种方法与另一种方法(cookie或网络存储)之间取得平衡。只是不要从一开始就忽略任何选项,并根据您的要求查看所有选项。

我敢打赌,有些实现将它们存储在仅HTTP的cookie中,以避免Web存储的XSS问题,然后最终使用面对XSS易受攻击的CSRF缓解策略