在服务众多的微服务体系中,使用单点登录方案是一个好的解决方式。也意味着每个面向用户的服务都必须和认证服务交互,这会带来琐碎的流量,同时方案实现起来较复杂。
分布式会话:
将用户认证信息存储在共享存储中,通畅由用户会话作为key来实现的简单分布式哈希映射,当用户访问微服务时,用户数据可以从共享存储中获取。
客户端令牌:
令牌在客户端产生,有身份认证服务进行签名,必须包括足够多的信息,以便在微服务中建立用户身份。令牌附加在每个请求上,为微服务提供用户身份认证。
这种方案安全性相对较好,身份验证注销是一个问题,缓解这种情况的方法可以使用短期令牌和频繁坚持认证服务等。
客户端令牌结合API网关:
意味着所有请求都通过网关,从而有效的隐藏了微服务。在请求时,网关将原始令牌转换为内部ID令牌。这时注销就不是问题。因为网关可以再注销时撤销用户的令牌。这种方案库支持比较好,但实现可能复杂。
这个方案使用起来比较容易,且性能不错。