c# - 不同微服务中的授权检查

标签 c# asp.net-core .net-core authorization microservices

我决定第一次尝试实现微服务架构而不是单体架构,并遇到了授权问题。 在整体架构中,我只是在访问挂有 [Authorize] 属性的 Controller 时在 header 中传递 token ,并根据当前的单个数据库对其进行检查。但是在微服务架构中,每个微服务都有自己的数据库,如何在访问其他微服务时检查token,我听说过API Gateway中检查的实现,但我认为,无论如何,每个微服务都应该有自己的数据库检查,因为如果用户未经授权,则不应访问 api。 我应该使用api网关向授权微服务发出请求进行验证吗? 我该如何实现这个?

我有一个单独的微服务用于用户授权(注册、登录、颁发 token ),其中包含带有 token 的用户数据库。 也就是说,我需要使用 API Gateway 向这个微服务发出请求?

最佳答案

一种方式 - 您应该尝试在 API 网关级别进行身份验证/授权。每当任何 API 调用到达需要某些权限的 API 网关时,请检查 token 。如果访问/ token 不存在,则返回 401。在前端,如果收到 401,则在 UI 上进行身份验证。

第二种方式 - UI 将 token 传递到 API 网关,API 网关将进一步将 token 发送到其他微服务。

这取决于您需要多大程度的权限。如果它处于非常颗粒的水平,则选择第二,否则选择第一。

关于c# - 不同微服务中的授权检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65611674/

相关文章:

asp.net-core-mvc - 为 dotnet core asp.net 运行 CRUD 脚手架时出错

c# - 用大量数据绘制图表的最佳方法是什么?

c# - Entity Framework 代码优先 : CASCADE DELETE for same table many-to-many relationship

c# - SupportedUICultures 不显示所有文化

c# - 更改密码时如何重复使用身份密码验证

javascript - 在使用 angular + .net Core 开发应用程序时,我应该将资源放在哪里

c# - 如果 C# 代码是 JIT 编译的,为什么我在构建时必须在 Visual Studio 中选择一个目标平台?

c# - 使用特定数据跟踪数据库插入

c# - 没有服务定位器的 CQRS 调度程序

c# - "GenerateDepsFile"任务意外失败 : Missing Microsoft. DotNet.PlatformAbstractions