【发布时间】:2020-10-02 09:41:20
【问题描述】:
我已经对许多不同的方法进行了大量研究,以验证和授权使用我的前端应用程序的用户访问我的 REST API。我已经构建了一个使用 OAuth2 和 JWT 的系统,并且需要进行健全性检查,因为我一个人在做这件事。
对于一些背景知识,我的前端是使用 Vue.js 构建的,我的 API 是使用 Django 和 Django Rest Framework 构建的。我的团队已经计划同时开发这个应用程序的移动和桌面版本,这两个版本都需要身份验证和授权。
为了简单起见,我将省略我拥有的替代解决方案,只谈谈最具争议的解决方案。
现在,当用户向我的前端客户端提供电子邮件和密码时,OAuth2(我的授权服务器)会使用 ROPC 向用户授予 JWT 令牌。我应该注意我的 API(我的资源服务器)和授权服务器位于同一台机器上。
我的应用程序基本上允许用户使用不同的计划(例如免费计划和付费计划)进行注册。当用户注册免费计划时,我需要前端应用程序不仅禁用 UI 中的某些功能和元素,还需要授权服务器和/或资源服务器来限制允许用户根据他们的查询进行查询的内容计划。
这个想法是,当用户注册或登录时,我的授权服务器将从数据库中获取关联的用户记录,并创建一个有效的 JWT,并附上一个声明,说明用户的计划以及其他一些非个人信息。然后一旦签名,它将它发送给用户,前端可以启用/禁用 UI 的某些部分......等等。因此,如果用户在移动设备上登录,我们可以根据 JWT 发送的相同声明自定义 UI .
我的问题是我不知道这是否是一个好方法。似乎我在我的圈子里问过的每个人都对是否使用 JWT 意见不一。那些并列的主要提出了安全问题,但是,据我了解,许多 JWT 安全陷阱都有据可查,只需使用一些常识就可以避免,就像任何其他基于会话/令牌的身份验证一样。我开始出现分析瘫痪。请帮忙。
【问题讨论】:
标签: authentication oauth oauth-2.0 jwt