身份 aspnet 核心微服务

Posted

技术标签:

【中文标题】身份 aspnet 核心微服务【英文标题】:identity aspnet core microservices 【发布时间】:2017-11-26 01:00:16 【问题描述】:

我想使用微服务架构开发应用程序。我是微服务的新手,直到现在我只使用单体方法。

我想做的是拥有一个负责用户身份验证的微服务并拥有代理 APIS 来授权请求​​。

在 IdentityServer4 文档中很好地记录了在代理 API 中授权请求,但是,当代理 api 将请求传递到最终微服务时,我如何授权此请求?

我知道,如果我正确设置了端微服务,则可以使用代理 api 中使用的相同令牌来授权端微服务的请求。但是我该如何通过呢?我是否像这样从代理 API 中的请求中获取令牌并将其传递给最终微服务?这样做是个好习惯吗?

或者阻止最终微服务仅接收来自我的代理 api 的请求并且那里没有授权逻辑是更好的选择吗?

PD:我想使用 asp.net-core

【问题讨论】:

【参考方案1】:

我知道如果我正确设置了最终微服务,同样的标记 在代理api中使用,可以在最后授权请求 微服务。但是我该如何通过呢?我是否从 代理 API 中的请求并将其传递给端微服务 像那样?这样做是个好习惯吗?

是的,通过JWT(或任何)来传递是很常见的,代理-->服务-->代理-->服务。

并且每一层都可以使用 UniqueId 等额外的细节来增加令牌(例如,当请求第一次命中以跟踪交互链、断路器等时)

如果您的应用程序由多种语言(框架)组成,这种方法确实很有帮助,因为您不需要重新实现每种语言的身份验证并让代理处理它,这对于容器架构特别有用,只需确保您让代理尽可能轻量级,你可以研究基于 Lyft 的 Envoy 代理的想法。

【讨论】:

以上是关于身份 aspnet 核心微服务的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 搭载 Envoy 实现微服务身份认证(JWT)

ASP.NET Core 搭载 Envoy 实现微服务身份认证(JWT)

想要做好微服务化,这个核心对象要管好

Spring Cloud - 如何仅允许访问特定微服务的端点?

浅谈微服务架构中的鉴权体系 | 洞见

微服务如何在异步通信中做授权?