You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用AAD短期令牌认证GCP Pub/Sub .NET客户端?

解决方案:通过自定义ICredential适配Azure身份联合令牌到GCP Pub/Sub客户端

GCP .NET SDK的客户端依赖Google.Apis.Auth.OAuth2.ICredential接口完成认证,我们可以通过自定义该接口的实现,将Azure生成的短期令牌注入到GCP客户端的认证流程中,具体步骤如下:

1. 实现自定义ICredential类

创建一个实现ICredential的类,封装你的Azure令牌获取逻辑,让GCP客户端可以调用它获取有效令牌:

using Google.Apis.Auth.OAuth2;
using System;
using System.Threading;
using System.Threading.Tasks;

public class AzureFederatedCredential : ICredential
{
    private readonly Func<Task<string>> _tokenProvider;

    public AzureFederatedCredential(Func<Task<string>> tokenProvider)
    {
        _tokenProvider = tokenProvider ?? throw new ArgumentNullException(nameof(tokenProvider));
    }

    // 核心方法:返回Azure生成的GCP访问令牌
    public Task<string> GetAccessTokenForRequestAsync(string authUri = null, CancellationToken cancellationToken = default)
    {
        return _tokenProvider();
    }

    // 接口默认实现(GCP Pub/Sub客户端无需使用这些方法)
    public void Initialize(Google.Apis.Services.IConfigurableHttpClientInitializer httpClientInitializer) { }

    public Task InitializeAsync(Google.Apis.Services.IConfigurableHttpClientInitializer httpClientInitializer, CancellationToken cancellationToken = default)
    {
        return Task.CompletedTask;
    }
}

2. 修改Pub/Sub客户端构建代码

将原来的JsonCredentials替换为自定义的AzureFederatedCredential,传入你的GetToken方法作为令牌提供者:

// 实例化自定义凭据,传入已实现的令牌获取方法
var federatedCredential = new AzureFederatedCredential(GetToken);

var builder = new PublisherClientBuilder
{
    Credential = federatedCredential,
    TopicName = TopicName.FromProjectTopic(_projectId, _topicId)
};

var publisher = await builder.BuildAsync();

关键注意事项

  • 资源URI配置:确保你的_resourceUri设置为GCP对应的权限范围,正确值应为"https://www.googleapis.com/auth/pubsub"(仅Pub/Sub权限)或"https://www.googleapis.com/auth/cloud-platform"(全平台权限),否则生成的令牌无法被GCP认证。
  • GCP身份联合配置验证:确认GCP端已完成工作负载身份池、身份提供者的创建,且Azure的托管身份/应用已被授予GCP目标服务账号的roles/iam.workloadIdentityUser权限,同时该服务账号拥有Pub/Sub主题的roles/pubsub.publisher角色。

内容的提问来源于stack exchange,提问作者PersianIronwood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 12:50:51