我在角度/节点架构上存在授权困境:
登录后,用户从节点REST端点请求权限。之后,Angular客户端将其保存并LocalStorage
。这一切都很好,但我担心恶意用户有可能在LocalStorage
中找到权限,并且很容易将其权限升级到allowdelete: true
等等上。然后,Angular会愉快地使用该新权限,并允许用户做任何他选择做的事情(直到他点击API服务器,在执行之前再次验证权限)。
我考虑了两个选项
选项1:将权限包装为JWT
这允许pdr-api签署令牌,以便我们检查它是否被篡改。
通过选择此选项,我认为我需要:
1)在信任有效载荷之前始终验证令牌
2)根据此SO帖子(JWT Verify client-side?),签名的验证应该只在服务器上进行。
选项2:无论如何都要抓住权限而不用担心
这将是一个已知的限制。风险相对较低,因为即使他们可以进入应用程序的未经授权的部分,API服务器甚至不会给它一天中的时间,因为他们没有被授权。
如果我选择Option A
,那么我不妨在每次需要权限时询问API服务器,因为它类似于命中服务器来验证令牌......对吗?
我倾向于Option B
。这是一个合理的(安全的)决定吗?有没有其他想法?身份验证是通过cookie和passport.js
处理的,所以我甚至不担心......只是授权。