首页 > 解决方案 > 托管服务标识是否应用于从控制台应用程序访问 Azure 应用程序服务

问题描述

我有一个在我们企业内部运行的控制台应用程序,需要作为应用程序服务 Web API 访问。处理身份验证的最佳方法是什么。我尝试使用 AD 注册应用程序,但它似乎仍然看不到应用程序服务。我尝试了以下代码,但我不确定这是否是正确的 API。

var App = ConfidentialClientApplicationBuilder.Create(CoreConstants.Auth_ClientId)
.WithAuthority(CoreConstants.Auth_Authority)
                .WithClientSecret("xxxxxxxxxxxxxx")
                .Build();

var token =  App.AcquireTokenForClient(scopes).ExecuteAsync();
token.Wait();

这失败了,说范围没有定义。它看起来像是在 Azure 中。

标签: c#azureazure-web-app-service

解决方案


首先,您需要为您的 App 身份创建角色分配。然后您可以从身份中获取访问令牌。代码将如下所示:

using Microsoft.Azure.Services.AppAuthentication;
using Microsoft.Azure.KeyVault;
// ...
var azureServiceTokenProvider = new AzureServiceTokenProvider();
string accessToken = await azureServiceTokenProvider.GetAccessTokenAsync("https://vault.azure.net");
// OR
var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));

不要忘记向您的应用程序添加对Microsoft.Azure.Services.AppAuthentication和任何其他必要 NuGet 包的引用。有关更多详细信息,请参阅 使用 App MSI 获取 Azure 资源的令牌


推荐阅读