首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计认证授权微型服务

设计认证授权微型服务
EN

Software Engineering用户
提问于 2018-05-02 15:03:38
回答 1查看 848关注 0票数 3

背景:

有三个不同的应用程序ABC,它们共享相同的用户详细信息,但我不得不在它们中实现身份验证,这是重复的工作。

经过研究,我决定采用微型服务的方式,并实现了认证服务。该服务为每个应用程序存储secret,并在用户尝试登录到给定应用程序时准备一个JWT令牌。一切都如期而至。

电流:

现在,每个应用程序都需要有角色和权限,我找到了一种实现它的方法,而不需要创建很多耦合。关于我目前的情况,我没有几个问题:

问题:

  1. 我应该在同一服务中添加授权登录,还是创建另一个包含rolespermission表的服务。
  2. 最终结果将是发送一个JWT令牌,其中包含定义用户详细信息和权限的有效负载,例如:{ uid: 1,name:‘.’,电子邮件:‘.’权限:[{‘编辑’:“帖子”,“用户”,‘删除’:“职位”,'read':“帖子”,“用户”,}] }

从理论上看,这种结构对我来说似乎很好。它将从客户端保存额外的网络调用。但它是否足够安全可靠?

PS:我在构建真正的应用程序方面没有足够的经验,但我希望我的方向是正确的。

EN

回答 1

Software Engineering用户

发布于 2018-05-03 22:59:29

你绝对应该把你的授权具体化。事实上,甚至有一个名为外部授权管理的范例。

在外部授权管理中,您选择将授权逻辑与应用程序的业务逻辑分离开来。你这样做有很多原因:

  • 维护
  • 可见性和可审计性:理解策略比理解代码更容易。
  • 可扩展性(未来证明):使用EAM,如果授权需求发生变化,则不需要重写应用程序。
  • 重用:您可以跨多个技术和层(从API到微服务、ESB到数据库)应用相同的授权逻辑。
  • 轻松和开发时间:编写策略比编写代码来实现有时可能比较复杂的授权需求更容易。

外部授权管理有不同的形式。一些框架包含一些工具,例如Security或Microsoft基于声明的授权。如果您想要一种技术中立的方法,请查看ABAC (基于属性的访问控制)和XACML,即ABAC的实现。

XACML架构定义了一个PEP,它将与您的微服务集成/在您的微服务前面集成,并定义一个PDP,它将根据一组预先建立的策略处理授权请求。

请查看架构图以获得详细信息。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/370342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档