c# - 托管服务标识是否应用于从控制台应用程序访问 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 中。
解决方案
首先,您需要为您的 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 资源的令牌。
推荐阅读
- sql - 仅从字符串 sql 的开头获取数值
- java - org.springframework.web.HttpRequestMethodNotSupportedException:不支持请求方法'GET']
- python - 使用python将文件夹附加到内存中的gzip
- javascript - eslint错误一元运算符'++'使用了no-plusplus
- python - 参数估计和最小二乘法最小化 - Python 和 Gekko
- regex - 从表 Greenplum 中解析数据
- python - Tkinter:返回 self.func(*args) 异常
- gcc - Autofdo 是否支持 -fprofile-reorder-functions?
- open-liberty - 到期时自动刷新 OpenId 访问令牌
- python - 如何在模型保存方法中获取多对多字段数据