问题:
背景
我正在使用ASP.Net Core API构建一个Angular应用程序,我希望使用现代最佳实践来保护它。我希望用户能够通过OIDC登录,但我不需要OIDC服务器来管理对多个应用程序/服务的访问(它只是一个应用程序。)我想要最简单,最安全的解决方案。
我理解我可以在SPA应用程序中编写代码以针对我想支持的每个提供程序启动OIDC,但使用ASP.Net Identity内置的外部提供程序支持似乎更简单。经过身份验证后,我不清楚应用程序应如何保持登录令牌/会话对XSS和CSRF的安全。
ASP.Net Identity 默认使用Cookie和防伪标记。这适合JavaScript应用吗?对XSRF和csrf tutorial的内置Angular支持似乎表明它是一种标准做法。这些cookie容易受到XSS的攻击,但是CSP& Angular可以帮助减轻这一点。
IdentityServer 作者建议OIDC访问令牌应与CSP一起存储在sessionStorage中。 (Blogged here& questioned here。)然而,这些令牌通常是短暂的,所以我怀疑有不同的权衡。我的理解是,刷新OIDC访问令牌可能use a session cookie无论如何都要访问OIDC服务器,这是真的吗?
为什么IdentityServer& JWT似乎比ASP.Net Identity更受欢迎?人们真的需要STS或令牌的好处来支持移动应用程序,还是技术上有趣?
其他注意事项: