在不与身份验证服务紧密耦合的情况下对每个微服务上的用户进行身份验证

时间:2020-12-19 18:44:57

标签: authentication microservices api-gateway

关于该主题的问答或博客文章太多了。我检查了几十个,但在我看来,没有一个听起来是个不错的选择。好吧,我担心的是,假设我有一个身份验证服务,它可以执行登录、注册、重置密码等操作,并且它使用 jwt。此外,还有 2 或 3 个其他微服务正在运行,需要对用户进行身份验证才能继续。

通过使用 jwt,我可以使用特定于语言的库来解密 jwt 上的数据。但是,如果用户更改了密码,或者用户被阻止了怎么办?在用户尝试获取新的 jwt 令牌之前,我们不会知道它无效,并且微服务不应该响应用户的请求。

场景一: 在这种情况下,为了检查用户是否被阻止,微服务需要向身份验证服务请求获取用户的当前状态,这使得它们紧密耦合。如果身份验证服务关闭,则无任何工作。

场景 2: 大多数使用 API 网关的人,可以在将请求转发到服务之前进行身份验证。但是 API 网关不会造成单点故障吗?掉下来会怎样?一切都将遥不可及。

场景 3: 这实际上对我来说听起来更好。只需让用户为请求存储和使用相同的 jwt。保持过期时间短可能会有所帮助。用户至少在被屏蔽后 5 分钟内使用它。

我只是想知道你走哪条路

0 个答案:

没有答案