有三个不同的应用程序A、B和C,它们共享相同的用户详细信息,但我不得不在它们中实现身份验证,这是重复的工作。
经过研究,我决定采用微型服务的方式,并实现了认证服务。该服务为每个应用程序存储secret,并在用户尝试登录到给定应用程序时准备一个JWT令牌。一切都如期而至。
现在,每个应用程序都需要有角色和权限,我找到了一种实现它的方法,而不需要创建很多耦合。关于我目前的情况,我没有几个问题:
roles和permission表的服务。JWT令牌,其中包含定义用户详细信息和权限的有效负载,例如:{ uid: 1,name:‘.’,电子邮件:‘.’权限:[{‘编辑’:“帖子”,“用户”,‘删除’:“职位”,'read':“帖子”,“用户”,}] }从理论上看,这种结构对我来说似乎很好。它将从客户端保存额外的网络调用。但它是否足够安全可靠?
PS:我在构建真正的应用程序方面没有足够的经验,但我希望我的方向是正确的。
发布于 2018-05-03 22:59:29
你绝对应该把你的授权具体化。事实上,甚至有一个名为外部授权管理的范例。
在外部授权管理中,您选择将授权逻辑与应用程序的业务逻辑分离开来。你这样做有很多原因:
外部授权管理有不同的形式。一些框架包含一些工具,例如Security或Microsoft基于声明的授权。如果您想要一种技术中立的方法,请查看ABAC (基于属性的访问控制)和XACML,即ABAC的实现。
XACML架构定义了一个PEP,它将与您的微服务集成/在您的微服务前面集成,并定义一个PDP,它将根据一组预先建立的策略处理授权请求。
请查看架构图以获得详细信息。

https://softwareengineering.stackexchange.com/questions/370342
复制相似问题