微服务架构中基于数据的授权的最佳实践是什么?



假设我们有几个微服务(订单、交付、发货等)在后端也有一个身份服务器,它对客户端进行身份验证并发出JWT令牌,因此所有的服务都不关心安全问题。

身份服务器告知哪个用户具有哪些角色,例如"Admin"、";Customer","快递代理";…

我想限制用户在单点服务中的CUD操作(我认为身份服务器是最好的选择)。一些城市和一些街道设置了限制

例如"Ali"可以访问

[ {"city-1":{"st-10","st-12" ... < n > ... "st-x"}} 
,{"city-5":{"st-10","st-12" ... < n > ... "st-x"}} 
..
..]

假设Ali请求所有在"city-10"从OrderService,它应该说是403 Status Code或空结果。或者当Ali从OrderService请求getAllOrders()时,结果应该只包含在[ {"city-1":{"st-10","st-12" ... < n > ... "st-x"}} ,{"city-5":{"st-10","st-12" ... < n > ... "st-x"}} .. ..]中放置的订单。

解决这个问题的最佳实践是什么?将这些授权数据放在jwt令牌中有意义吗?还是保持JWT简单,让服务通过给定令牌调用由身份服务公开的API并获得用户访问?

也许你会说这根本不是身份服务职责!

所以请给我建议,让我知道你的经历。

感谢

您可以查找OAuth。身份服务可以对客户端进行身份验证,并将授权范围放入JWT令牌中,服务可以根据范围对请求进行授权。

最新更新