分类目录归档:分布式

微服务架构的认证与鉴权

微服务很酷,但流量在各服务间欢快穿梭的背后可能隐藏着重大安全隐患,黑客也许只需要通过一个点,就能将整个体系击溃。

相比单体应用,在微服务架构的身份认证和鉴权需要考虑的点要多许多。在单体应用中的只有两个对象,即用户与整体的系统,相对简单。

在微服务架构中,对象可能有用户、API 网关、身份认证鉴权服务和其他服务。系统由多个服务组成,并且为了更好的伸缩性,每个服务都应该是无状态的,而服务的对外网络也许并不是完全隔离的,服务间是不可信的,服务间也需要认证和鉴权。

为了保持微服务的简洁轻量,可以将身份认证和鉴权可以单独的拆分出来作为一个或两个独立的服务,由这些服务负责授权,其他服务可以根据用户携带的令牌进行认证。当然,若是能做到完全隔离,并且服务间完全可信,也可以在 API 网关统一解决认证和鉴权,能减少各服务的关注点,把注意力集中在业务本身。服务间通信有一定的成本,如果每个请求过来,除了 API 网关以外,请求涉及到服务都调用一次鉴权服务,这会大大增加鉴权服务的压力,可能会成为系统瓶颈并带来隐患,下面为了平衡安全性和性能来进一步分析选型。

继续阅读