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

Google Cloud HTTP函数通过C#应用调用时OIDC认证失败问题咨询

你当前使用了适用于Cloud IAP的认证逻辑来调用未接入IAP的原生GCP HTTP函数,核心错误是OIDC令牌的目标受众配置不正确。

修正步骤

  • 修正目标受众参数:原生GCP HTTP函数要求OIDC令牌的目标受众(Audience)必须等于函数的完整触发URL,而非IAP客户端ID。你之前调度器配置OIDC令牌时填写的目标受众就是该函数URL,因此可以正常触发,当前代码使用IAP客户端ID作为目标受众,会导致令牌校验失败。
  • 调整对应代码:修改GetOidcTokenAsync方法的调用逻辑,将目标受众替换为你要调用的函数完整URL,示例修改后的核心代码如下:
public async Task<HttpResponseMessage> InvokeRequestAsync(
      string uri, CancellationToken cancellationToken = default)
{
    OidcToken oidcToken = await GetOidcTokenAsync(uri, cancellationToken);
    string token = await oidcToken.GetAccessTokenAsync(cancellationToken);
    using HttpClient httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
    return await httpClient.GetAsync(uri, cancellationToken);
}

public async Task<OidcToken> GetOidcTokenAsync(string targetAudience, CancellationToken cancellationToken)
{
    string filepath = @"<path to json file for service account>";
    GoogleCredential credential = await GoogleCredential.FromFileAsync(filepath, cancellationToken);
    return await credential.GetOidcTokenAsync(OidcTokenOptions.FromTargetAudience(targetAudience), cancellationToken);
}
  • 额外校验项:
    • 确认代码中使用的服务账号JSON密钥对应的账号,已被授予目标函数的Cloud Functions Invoker角色
    • 确认目标受众参数和你实际调用的函数URL完全一致,不要出现多余的末尾斜杠、路径参数不一致的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:57:02