【问题标题】:Microservices authorization微服务授权
【发布时间】:2018-10-10 20:27:59
【问题描述】:

一个微服务应该拥有自己的数据,没有共享数据库。 令牌包括用户 ID、clams,但声明只是身份验证,而不是授权。 因此,如果我有一个单体应用程序,我可以检查用户是否是组的一部分(声明),如果是,我从数据库中获取该组能够做什么。 但是如果我有一个微服务,我就不能那样做,我不想把这个授权信息复制到所有的微服务中。

例如,所有用户都属于一个团队,应用程序中的所有服务都属于一个团队(例如,团队“A”的成员可以访问团队“A”的论坛、团队“A”的画廊等。

即使我将团队存储在声明中(我不希望这样做,因为在令牌仍然存在时成员资格可能会发生变化),我需要在所有微服务中拥有团队数据。但这听起来很糟糕。

那我该怎么办?

谢谢

【问题讨论】:

  • 您使用 API 网关吗?
  • 我可能会,是的......
  • 然后就可以在API网关做授权了。

标签: token microservices


【解决方案1】:

您应该通过微服务链在请求标头中传递用户令牌(从声明中向上读取),这样每个微服务只需验证令牌即可确定用户已成功通过身份验证,并在微服务中执行权限强制本身。

【讨论】:

    猜你喜欢
    • 2019-03-15
    • 2020-09-27
    • 2016-07-17
    • 2015-07-24
    • 2019-06-26
    • 2017-12-09
    • 1970-01-01
    • 2018-07-06
    • 2016-05-19
    相关资源
    最近更新 更多