API 到 API - 使用服务帐户

Posted

技术标签:

【中文标题】API 到 API - 使用服务帐户【英文标题】:API to API - With a Service Account 【发布时间】:2021-12-26 00:15:27 【问题描述】:

我正在尝试借助客户端凭据流从另一个 API (API1) 调用 API (API2)。是否可以仅授予对 API2 某些部分的访问权限?

为了提供一些上下文,当从 API1 调用 API2 时,我目前正在使用一个服务帐户来决定允许访问 API2 的哪些部分。服务帐号在 API2 中创建和配置(使用角色),并与 API1 共享。

我正在尝试使用 oAuth 的客户端凭据流来实现此目的,但我找不到任何有关 API 内受限访问的信息。我相信 ApiScopes 在这种情况下不会起作用。

您能否告诉我在客户端凭据流中是否可以进行受限 API 访问?或者这可以在任何其他流程中实现吗?

问候, 湿婆

【问题讨论】:

【参考方案1】:

或者,我们可以为 API2 定义一个新的应用程序角色。此角色将有权访问 API2 的选定部分。然后我们可以将此角色添加到您在客户端凭据流中使用的 Client_id。

【讨论】:

【参考方案2】:

是的,您可以使用 ASP.NET Core 中的内置授权系统根据接收到的访问令牌中的声明来控制访问。 AddJwtBearer 所做的是将您的访问令牌(一旦通过身份验证)转换为 ClaimsPrincipalUser 对象。

查看这些链接了解详情:

Policy-based authorization in ASP.NET Core Claims-based authorization in ASP.NET Core

【讨论】:

以上是关于API 到 API - 使用服务帐户的主要内容,如果未能解决你的问题,请参考以下文章

将Google People API与服务帐户配合使用

如何使用API Explorer作为服务帐户?

使用服务帐户 Google BigQuery API 时出现登录要求错误

Java 中的 Adwords API、OAuth2 和服务帐户

Drive API 上的服务帐户已达到存储限制

获取访问令牌时服务帐户 API 错误