如何使用 MSAL.NET 处理多租户守护程序服务应用程序的 AppTokenCache
How to handle AppTokenCache of multi-tenant daemon service application using MSAL.NET
是否可以使用 MSAL.NET 身份验证库来处理由多租户守护程序服务应用程序(即客户端凭证授予)生成的多个 AppTokenCache
?
在这种情况下,我必须根据租户 ID 构建 (n) 个机密客户端应用程序,并且我需要维护令牌。
var confidentialClientApplication_001 = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithTenantId("TenantId__001")
.WithClientSecret(clientSecret)
.Build();
var confidentialClientApplication_002 = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithTenantId("TenantId__002")
.WithClientSecret(clientSecret)
.Build();
...
...
...
var confidentialClientApplication_999 = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithTenantId("TenantId__999")
.WithClientSecret(clientSecret)
.Build();
This document 实现单个机密客户端应用程序。
您可以在获取令牌时指定不同的租户ID。
这应该有效:
var app = ConfidentialClientApplicationBuilder.Create("client-id")
.WithAuthority(AzureCloudInstance.AzurePublic, AadAuthorityAudience.AzureAdMultipleOrgs)
.WithClientSecret("secret")
.Build();
var result = await app.AcquireTokenForClient(new[]{"https://graph.microsoft.com/.default"})
.WithAuthority(AzureCloudInstance.AzurePublic, Guid.Parse("target-tenant-id"))
.ExecuteAsync();
所以我们指定"organizations"为app权限,然后在获取token的时候指定具体的租户。
是否可以使用 MSAL.NET 身份验证库来处理由多租户守护程序服务应用程序(即客户端凭证授予)生成的多个 AppTokenCache
?
在这种情况下,我必须根据租户 ID 构建 (n) 个机密客户端应用程序,并且我需要维护令牌。
var confidentialClientApplication_001 = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithTenantId("TenantId__001")
.WithClientSecret(clientSecret)
.Build();
var confidentialClientApplication_002 = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithTenantId("TenantId__002")
.WithClientSecret(clientSecret)
.Build();
...
...
...
var confidentialClientApplication_999 = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithTenantId("TenantId__999")
.WithClientSecret(clientSecret)
.Build();
This document 实现单个机密客户端应用程序。
您可以在获取令牌时指定不同的租户ID。
这应该有效:
var app = ConfidentialClientApplicationBuilder.Create("client-id")
.WithAuthority(AzureCloudInstance.AzurePublic, AadAuthorityAudience.AzureAdMultipleOrgs)
.WithClientSecret("secret")
.Build();
var result = await app.AcquireTokenForClient(new[]{"https://graph.microsoft.com/.default"})
.WithAuthority(AzureCloudInstance.AzurePublic, Guid.Parse("target-tenant-id"))
.ExecuteAsync();
所以我们指定"organizations"为app权限,然后在获取token的时候指定具体的租户。