首页 > 解决方案 > 在后端(.Net)和前端(角度)之间共享 JWT 令牌

问题描述

我有一个特定的项目,我在其中使用带有 Angular 7 前端构建的 .Net ASP MVC 应用程序。“特定”是指 Angular 禁用了路由 - 路由由 MVC 后端应用程序处理。它返回 cshtml 视图(将一些数据传递给脚本标签)并以角度呈现其视图。

现在的情况是我想包含 JWT 令牌的授权并且架构有问题。

  1. MVC 处理路由,因此它应该“知道”令牌,即自动处理请求等。

  2. Angular 可以使用访问令牌通过 API 处理业务逻辑

  3. 如果 Angular 收集令牌(传递用户名/密码)后端无法生成自己的 access_token,因为它不知道凭据。它可能导致数据在前/后端之间的不同步

  4. 只有一个应用程序应该处理刷新令牌

那么哪个应用程序应该处理从 AuthServer 收集 access_token 的过程?刷新令牌应该由什么负责?在哪里存储令牌?

谁能告诉我起点?

标签: angularasp.net-mvcarchitecturejwtauthorization

解决方案


一般来说,使用客户端 Angular 应用程序来获取一个access_token是一个危险的解决方案。当通过 Javascript 创建访问令牌时,它会受到包括 XSS 和 XSRF 在内的许多攻击。

当前的最佳实践方法是将用户的凭据安全地发送到您的服务器端应用程序,并允许它处理身份验证和授权流程。或者,委托给为此场景设计的第三方产品。当您的用户第一次尝试访问受保护的客户端视图时,它应该执行服务器端的安全数据请求。应在服务器端应用程序上为用户创建一个会话,在此期间应提示他们进行身份验证。身份验证完成后,您的服务器应用程序可以选择通过 httpOnly 和 Secure cookie 与客户端应用程序共享(和存储)JWT。

使用 httpOnly 和 Secure cookie 可确保令牌不会与用户浏览器以外的任何人共享。


推荐阅读