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

如何基于Azure Go SDK实现多租户认证?求示例

使用Azure Go SDK实现多租户认证

可以通过Azure Go SDK的github.com/Azure/azure-sdk-for-go/sdk/azidentity包实现类似你提供的.NET代码的多租户认证功能,核心是通过DefaultAzureCredentialOptions的AdditionallyAllowedTenants字段配置允许的租户列表。

实现示例代码

package main

import (
	"context"
	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources"
)

func main() {
	// 配置需要允许访问的租户ID列表
	credOpts := &azidentity.DefaultAzureCredentialOptions{
		AdditionallyAllowedTenants: []string{"<tenant_id_1>", "<tenant_id_2>"},
	}

	// 创建支持多租户的DefaultAzureCredential实例
	credential, err := azidentity.NewDefaultAzureCredential(credOpts)
	if err != nil {
		panic(err) // 实际场景中建议替换为更优雅的错误处理
	}

	// 示例:使用该凭证调用Azure资源管理器API
	ctx := context.Background()
	subClient, err := armresources.NewSubscriptionsClient(credential, nil)
	if err != nil {
		panic(err)
	}

	// 调用API获取订阅列表
	resp, err := subClient.List(ctx, nil)
	if err != nil {
		panic(err)
	}

	// 遍历输出订阅ID
	for _, sub := range resp.Value {
		println(*sub.SubscriptionID)
	}
}

关键说明

  • AdditionallyAllowedTenants字段接受字符串切片,直接填入需要授权的租户ID即可。
  • 需确保你的Azure应用注册已配置为多租户应用(在Azure门户的应用注册页面,将"支持的账户类型"设置为"任何组织目录中的账户")。
  • DefaultAzureCredential会自动尝试多种认证方式(环境变量、托管标识、Azure CLI等),并根据目标服务的租户要求,从允许列表中匹配对应的租户完成认证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:55:13