【问题标题】:How to handle AppTokenCache of multi-tenant daemon service application using MSAL.NET如何使用 MSAL.NET 处理多租户守护程序服务应用程序的 AppTokenCache
【发布时间】:2020-05-14 16:09:11
【问题描述】:

是否可以使用MSAL.NET 身份验证库来处理由多租户守护程序服务应用程序生成的多个AppTokenCaches(即客户端凭据授予)?

在这种情况下,我必须基于租户 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 实现单个机密客户端应用程序。

【问题讨论】:

    标签: azure-active-directory adal msal


    【解决方案1】:

    您可以在获取令牌时指定不同的租户 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();
    

    所以我们将“组织”指定为应用权限,然后在获取令牌时指定特定租户。

    【讨论】:

    • 我们需要使用 ClientId 在 info.plist 文件中添加 URLSchemes。如果我们有不同的客户端 ID,那么如何处理呢?我有一个可供多个客户使用的应用程序,他们有自己的环境。请指教。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2012-05-17
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    相关资源
    最近更新 更多