授权、令牌和 nodejs
Posted
技术标签:
【中文标题】授权、令牌和 nodejs【英文标题】:Authorization, tokens and nodejs 【发布时间】:2019-02-26 19:20:47 【问题描述】:我正在考虑对我的应用进行授权。除了针对 mongo 数据库的 JWT 身份验证之外,我还想为不同角色保护某些路由。我对 OAuth 或 3rd 方服务不感兴趣
我遇到的困难是在哪里存储角色。如果我查询数据库进行身份验证并返回一个令牌,我是否也应该在有效负载中返回角色?如果用户被进一步授权,然后在经过身份验证后检查中间件?有人不能用管理员权限重写令牌吗?
执行此操作的标准方法是什么?
这最终是在前端为 Angular 应用提供服务的 api
谢谢
【问题讨论】:
一个JWT是签名的,所以如果token被编辑了,hash将不再匹配,token可以被拒绝。不过,该检查只能在后端/API 中进行。 SPA 几乎无法提供安全保障 【参考方案1】:使用JWT signed token
执行此操作的标准方法@ 由在其上生成的服务器的私钥签名,并将公钥发送给所有消费客户端。如果有人更改令牌内的正文 authenticating authority,即服务器将尝试通过其私钥对签名进行数字验证。由于此令牌与通过服务器签名发送的令牌不同,因此签名永远不会匹配。
此外,为了保护您的 JWT token
在活动会话中被嗅出,您已制定了 CSRF/XSRF 缓解策略
【讨论】:
谢谢。我想我更关心将角色添加到应用程序结构中的过程。不仅是身份验证,还有授权。能够达到某些端点的特定人员以上是关于授权、令牌和 nodejs的主要内容,如果未能解决你的问题,请参考以下文章
当用户在nodeJS / Express和Angular中空闲一段时间(基于令牌的授权)时,我如何使我的JWT令牌过期