我有一堆微服务,其中一个负责验证用户身份。在此服务中,允许用户使用Facebook,google(使用Passportjs)登录并使用常规的用户名/密码登录。
通过Passport,可以很容易地验证对API的请求并处理会话,但是,如果我有多个API(由于有多个微服务),那么就很容易。 Passport可能会导致很多开销,因为我必须将所有护照配置文件复制到所有服务,并且如果我想更改某些内容,则必须全部更改。还有其他选择吗?我曾考虑过将JWT与所有服务共享的机密一起使用,但是我又不确定这是否可行。
答案 0 :(得分:0)
一种更有用的方法是使用API网关,这实质上意味着所有面向用户的微服务都应在其上注册并路由到内部微服务。您用于身份验证的服务(恰好也使用第三方)仍然可以按原样存在,但可以驻留在API网关后面。
用户登录后,任何其他终结点都会在将请求下游发送给其他微服务之前,检查您正在使用的服务的用户会话,以验证用户的Facebook,Google等身份。请注意,需要身份验证或授权的其他微服务需要是私有的,并且只能从同一网络内的服务(例如API网关)访问。