不同微服务中的授权检查
Authorization check in different microservices
我决定第一次尝试实现微服务架构而不是单一架构,运行 遇到授权问题。
在单体架构中,我只是在访问挂有 [Authorize] 属性的控制器时在 header 中传递了令牌,并根据当前的单一数据库对其进行了检查。但是在微服务架构中,每个微服务都有自己的数据库,访问其他微服务的时候如何检查token,我听说过在API网关中实现检查,但是我觉得,反正每个微服务应该有自己的检查,因为如果用户未被授权,则不应访问 api。
我应该使用 api 网关向授权微服务发出请求以进行验证吗?
我该如何实施?
我有一个单独的微服务用于用户授权(注册、登录、令牌发行),它有一个用户数据库。
也就是说,我需要使用 API 网关向此微服务发出请求?
单向 -
您应该尝试在 API 网关级别执行 authentication/authorization。每当 API 调用需要一些权限的 API 网关时,请检查令牌。如果 access/token 不存在,则 return 401。在前端,如果您收到 401,则在 UI.
进行身份验证
第二种方式 -
UI 将令牌传递给 API 网关,网关将进一步将令牌发送给其他微服务。
这取决于您需要多大程度的许可。如果它处于非常精细的水平,则选择第 2 个,否则选择第 1 个。
我决定第一次尝试实现微服务架构而不是单一架构,运行 遇到授权问题。 在单体架构中,我只是在访问挂有 [Authorize] 属性的控制器时在 header 中传递了令牌,并根据当前的单一数据库对其进行了检查。但是在微服务架构中,每个微服务都有自己的数据库,访问其他微服务的时候如何检查token,我听说过在API网关中实现检查,但是我觉得,反正每个微服务应该有自己的检查,因为如果用户未被授权,则不应访问 api。 我应该使用 api 网关向授权微服务发出请求以进行验证吗? 我该如何实施?
我有一个单独的微服务用于用户授权(注册、登录、令牌发行),它有一个用户数据库。 也就是说,我需要使用 API 网关向此微服务发出请求?
单向 - 您应该尝试在 API 网关级别执行 authentication/authorization。每当 API 调用需要一些权限的 API 网关时,请检查令牌。如果 access/token 不存在,则 return 401。在前端,如果您收到 401,则在 UI.
进行身份验证第二种方式 - UI 将令牌传递给 API 网关,网关将进一步将令牌发送给其他微服务。
这取决于您需要多大程度的许可。如果它处于非常精细的水平,则选择第 2 个,否则选择第 1 个。