每个微服务都必须实现身份验证和授权,还是最好集中处理它?

问题描述

这个问题不是关于如何保护Oauth2或JWT之类的微服务,而是什么更好的策略来处理它。

我们应该选择什么?请,如果有其他建议,欢迎您!

  1. 与微服务隔离的身份验证和授权服务(AuthService): 微服务必须在处理请求之前调用AuthService。 (如中间件)
  2. 微服务必须执行自己的身份验证和授权。
  3. AuthService始终会接收呼叫并进行微服务(如网关)的转移
  4. 实现后端后端(BFF)并对其进行身份验证并调用其他微服务。

最后一个,有些朋友跟我说了buuut ...如果您要扩展1或2​​个微服务,那么您也必须垂直扩展BFF。对我来说很奇怪。

解决方法

通常,身份验证和授权处于微服务级别。但是身份验证服务/数据库应该在微服务的外部和内部,以便启用缓存以最大程度地减少对Auth服务的调用并最小化API延迟。