【问题标题】:Call Microservice from Another Service with OAuth2 or OIDC使用 OAuth2 或 OIDC 从另一个服务调用微服务
【发布时间】:2021-03-17 07:49:17
【问题描述】:
我有两个使用 .net core 3.1 开发的服务,它们使用 IdentityServer4 进行身份验证。
我有一个 Angular 客户端应用程序,它调用第一个服务 AuthorizationService,它还调用另一个服务 MembershipService。
我希望授权服务使用其客户端 ID 和机密调用 MembershipService,而不是使用用户提供的令牌,因为我不希望用户能够访问 MembershipService,而只能访问授权服务。
如何将一项服务配置为另一项服务的客户端。
问候
【问题讨论】:
标签:
.net-core
oauth-2.0
microservices
identityserver4
openid-connect
【解决方案1】:
您可以在您的 ID4 令牌提供者服务中实现 ExtensionGrant 验证器。一旦您为扩展授权类型提供支持,您就可以为AuthorizationService 创建一个单独的 ID4 客户端以及它自己的 GrantType 和 ClientScope。
每当AuthorizationService 想要与MembershipService 通信时,然后从 ID4 获取委托令牌,并通过 HTTP 请求传递新收到的令牌。
客户端配置:
- ClientId:
authServiceClient
- 授予类型:
delegation
- 客户端范围:
authService_Scope
我希望这个答案对你有所帮助,快乐编码!