如何将 "resource principal named https://management.azure.net" 添加到 Azure 中的默认目录?

How does one add the "resource principal named https://management.azure.net" to the default directory in Azure?

我想做的事:使用自定义工具中的 Azure REST API

我做了什么: 我在我的默认目录中创建了一个名为 CDTester 的应用程序注册和一个秘密。然后我去订阅了,给CTTester添加了角色Contributor。

我从 user-secrets 加载了一个配置对象 cfg,其中包含 CDTester 的应用程序 ID 和机密以及我的默认目录的租户 ID。

现在我尝试这样验证:

var app = ConfidentialClientApplicationBuilder
                .Create(cfg.ApplicationId)
                .WithTenantId(cfg.LoginTenantId)
                .WithClientSecret(cfg.ApplicationSecret)
                .Build();
            var authResult = await
                app.AcquireTokenForClient(new[] {"https://management.azure.net/.default"})
                    .ExecuteAsync();

.ExecuteAsync调用失败,显示 “' AADSTS500011:在名为 的租户中找不到名为 https://management.azure.net 的资源主体。如果租户管理员未安装应用程序或未征得租户中任何用户的同意,就会发生这种情况。您可能已将身份验证请求发送给错误的租户。"

作为(弱)替代方案,我向 CDTester 添加了 Azure Service Management 委托权限,给予管理员同意,将代码切换为:

            var app = PublicClientApplicationBuilder.Create(cfg.ApplicationId)
                .WithTenantId(cfg.LoginTenantId)
                .WithDefaultRedirectUri()
                .Build();
            var authResult = await app
                .AcquireTokenInteractive(new[] { "https://management.azure.net/user_impersonation" })
                .ExecuteAsync();

运行 它以我自己的用户(当然是全局管理员)登录并收到相同的消息,这次是在登录后立即在浏览器中显示。

在此流程中将范围更改为“https://management.azure.net/.default”也不会改变任何内容。

所以,显然我需要以某种方式“安装资源主体 https://management.azure.net”到我的租户中 - 但对于我来说,我找不到如何做。

如评论中所述,请将https://management.azure.net更改为https://management.azure.com/

本质上没有https://management.azure.net这样的东西。要获取访问令牌以便您可以执行 Azure 资源管理器 API,您需要获取 https://management.azure.com/ 资源的令牌。