常用中间件 vs 身份验证 api

Posted

技术标签:

【中文标题】常用中间件 vs 身份验证 api【英文标题】:Common middleware vs authentication api 【发布时间】:2020-05-03 09:33:56 【问题描述】:

我正在处理登录流程,无法确定在微服务架构中验证身份验证的最佳方法。

发生的情况是 jwt 在 httpOnly cookie 中发送到客户端,并保留在登录状态。 在每个请求中,cookie 都会发送到受保护的 REST api(微服务)以验证请求/jwt 的真实性。

可用的两个选项:

我为cookie/jwt验证创建通用中间件,并将其添加到每个微服务中 我将此服务嵌入到身份验证微服务中,并创建请求以通过 http(s) 以集中方式处理验证。

这两种方法都可以,我想知道每种方法的优缺点是什么。 您是否有使用其中任何一种的经验,因此建议使用另一种?

【问题讨论】:

【参考方案1】:

我决定完全隔离身份验证服务。 调用 api 的代码对于所有需要处理所有身份验证相关问题的微服务都是通用的,但在执行更新时,身份验证 api 本身将自动为所有微服务更改。 我更喜欢在更新时单独对每个微服务进行更改。 如果出于任何原因需要,也可以对 api 进行版本控制。

http 调用形成了非常小的延迟,但 http 调用又是轻量级的。 这同样适用于相互通信而不是身份验证的微服务。 它们将被上传到云中的 Kubernetes 集群,我假设这些调用会很快。

如果需要,仍然可以修改代码。

【讨论】:

以上是关于常用中间件 vs 身份验证 api的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 身份验证中间件“auth:api”

.Net Core JWT 身份验证与自定义 API 密钥中间件

哨兵:Express api基本身份验证中间件使哨兵无法工作

如何使用 API 中间件在 Laravel 中测试 PHPUnit 一个经过身份验证的用户?

ASP.NET 5 中的 Web API 身份验证

针对 web api 中间层的 mvc 身份验证