Node.js MERN堆栈身份验证和授权
我正在创建一个MERN(Mongo、Express、React-redux、Node)堆栈应用程序,在其中添加身份验证、授权和访问控制功能。我知道如何实现身份验证服务,但不知道如何实现授权和访问控制。例如:当用户登录时,他将能够在仪表板上创建、编辑和删除todo,而没有人能够看到或编辑该todo。我如何实现这一点?任何链接,代码或帮助将不胜感激。非常感谢 这是一个很好的问题。答案很长:-)我刚刚回答了一个类似的问题 TL;博士 您需要的是所谓的外部化/动态授权管理。形式化模型称为基于属性的访问控制(/)。它由NIST正式确定 更深入 你说: 当用户登录时,他将能够在仪表板上创建、编辑和删除todo,而没有人能够看到或编辑该todo 您需要使用属性编写一个策略,该属性将允许用户执行此类操作,并阻止他们执行其他操作。如果我们重写您的需求,它将变成:Node.js MERN堆栈身份验证和授权,node.js,react-redux,authorization,access-control,mern,abac,alfa,Node.js,React Redux,Authorization,Access Control,Mern,Abac,Alfa,我正在创建一个MERN(Mongo、Express、React-redux、Node)堆栈应用程序,在其中添加身份验证、授权和访问控制功能。我知道如何实现身份验证服务,但不知道如何实现授权和访问控制。例如:当用户登录时,他将能够在仪表板上创建、编辑和删除todo,而没有人能够看到或编辑该todo。我如何实现这一点?任何链接,代码或帮助将不胜感激。非常感谢 这是一个很好的问题。答案很长:-)我刚刚回答了一个类似的问题 TL;博士 您需要的是所谓的外部化/动态授权管理。形式化模型称为基于属性的访问控
- 用户可以在自己的仪表板上创建、编辑和删除待办事项
- 没有人可以在他们不拥有的仪表板上看到项目
- 主题(或用户)及其属性(如角色、部门…)
- 操作(例如查看、编辑、删除…)
- 对象或资源(“TODO”项)及其容器(仪表板)
如果user.username==object.dashboard.owner,则用户可以对类型为==“TODO”的对象执行操作==“查看”
如果object.dashboard.owner!=user.username
- 策略管理点(PAP):编写策略的位置
- 策略决策点(PDP):运行/执行策略的位置
- 策略执行点(PEP):执行策略的地方-这可能是一个API网关、一个拦截器
- 策略信息点(PIP):可以检索其他元数据和属性的位置
- 在web UI中?(功能验证)
- 在API层中(事务性authZ)
- 在数据层中(以数据为中心的authZ/过滤)
- -开源
- AuthZForce-一个开源的PDP
- -商业ABAC平台