假设我们有几个微服务(订单、交付、发货等)在后端也有一个身份服务器,它对客户端进行身份验证并发出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令牌中,服务可以根据范围对请求进行授权。