我是azure的新手,我正在尝试使用他们的go sdk实现多租户身份验证,但在sdk和go sdk文档中找不到任何类似的内容。
我偶然发现了这篇关于使用Azure Identity库的多租户应用程序的指南,其中提到了如何通过语言sdk实现它,但它没有包含任何关于golang的示例。
我想做的是类似于它是如何在。net中完成在这个代码片段
var credential = new DefaultAzureCredential(new DefaultAzureCredentialOptions
{
AdditionallyAllowedTenants = { "<tenant_id_1>", "<tenant_id_2>" }
});
有没有人尝试过通过azure go sdk实现这个并发现成功?
这最终在azure go sdk中可用。下面是如何实现这一点的示例代码片段。
import(
"github.com/Azure/azure-sdk-for-go/sdk/azcore/arm"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armsubscriptions"
)
auxTenants := []string{"azure-tenant-id-1", "azure-tenant-id-2"}
cred, err := azidentity.NewClientSecretCredential(tenantID,
clientID, secret,
// AdditionallyAllowedTenants prevents the credential from trying
// to authenticate in an unexpected tenant. All credential types
// capable of multitenant auth have this option.
&azidentity.ClientSecretCredentialOptions{
AdditionallyAllowedTenants: auxTenants},)
if err != nil {
// TODO: handle error
}
// armsubscription is just an example, all ARM clients have this
// same options API
client, err := armsubscription.NewSubscriptionsClient(cred,
// client will add a token for each of these tenants to every
// request.
&arm.ClientOptions{AuxiliaryTenants: auxTenants},
)
不幸的是,在问这个问题的时候,azure go sdk中还没有这个功能。
我后来打开了一个GitHub问题,在那里我得到了一个自定义的解决方案,直到实际的功能在go sdk的测试版中发布。
Github问题参考- https://github.com/Azure/azure-sdk-for-go/issues/19726