Dyl*_*vis 12 .net c# azure azure-keyvault asp.net-core
我正在尝试将面向 .net 框架的 aspnet 核心应用程序与 Azure Keyvault 连接起来。在支持身份的新 azure vm 上一切正常,但此应用程序托管在不支持身份的经典 azure vm 上。我创建了系统环境变量 AzureServiceAuthConnectionString,它可以分割其他带有 Azure 密钥库的 .net 框架应用程序已经在使用并且运行良好。
查看我的标准输出日志,我每次都会收到以下异常。
Azure.Identity.CredentialUnavailableException: DefaultAzureCredential failed to retrieve a token from the included credentials
EnvironmentCredential authentication unavailable. Environment variables are not fully configured
ManagedIdentityCredential authentication unavailable, the requested identity has not been assigned to this resource.
Run Code Online (Sandbox Code Playgroud)
我在启动时使用以下代码:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseApplicationInsights(ConfigurationManager.AppSettings["applicationInsightsInstrumentationKey"])
.ConfigureKestrel(options => options.AddServerHeader = false)
.UseIISIntegration()
.ConfigureAppConfiguration((context, config) =>
{
var vaultName = ConfigurationManager.AppSettings["VaultName"];
if (!string.IsNullOrEmpty(vaultName))
{
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(
new KeyVaultClient.AuthenticationCallback(
azureServiceTokenProvider.KeyVaultTokenCallback));
config.AddAzureKeyVault(
$"https://{vaultName}.vault.azure.net/",
keyVaultClient,
new DefaultKeyVaultSecretManager());
}
})
.UseStartup<Startup>();
Run Code Online (Sandbox Code Playgroud)
在 web.config 中,以下项目:
<configSections>
<section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false"/>
</configSections>
<configBuilders>
<builders>
<add name="AzureKeyVault" vaultName="<#= this.VaultName #>" type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.Azure, Version=2.0.0.0, Culture=neutral" vaultUri="https://<#= this.VaultName #>.vault.azure.net" />
</builders>
</configBuilders>
<connectionStrings configBuilders="AzureKeyVault">
<add name="ConnectionString" connectionString="" providerName="System.Data.SqlClient"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
Kur*_*ula 10
我按照以下步骤解决了该问题。确保您具有 Azure 门户访问权限和所需资源。
这意味着 IDE 无法从构建环境/容器中找到 Azure 凭据。如果注销/登录方法不起作用\xe2\x80\x99,则从您的终端:
\naz login
使用您的凭据登录并重新运行该程序。
\n如果 Visual Studio 由于某种原因失去它的 Azure 服务身份验证连接或您的实际 AD 凭据已更改(例如密码更改),也会发生此错误。
在这种情况下,只需再次登录即可为我解决此问题:
在 Visual Studio 中,转到“工具”>“选项”。展开“Azure 服务身份验证”>“帐户选择”。如果您看到“重新输入您的凭据”链接,请单击它并再次登录。如果没有,请尝试通过右上角的 Visual Studio 配置文件进行常规注销 + 登录。
如果您使用 IIS 而不是 IIS Express 在本地运行站点,则可能需要在 Azure 帐户凭据下运行站点的应用程序池标识,因此您用于在浏览器中登录 Portal.azure.com 或dev.azure.com。你的 PAT 将不起作用。
设置完成后,回收应用程序池。
然后去%windir%\System32\inetsrv\config\applicationHost.config
搜索setProfileEnvironment。如果设置为false,请将其更改为true。
如果不存在,请将其添加到 applicationPoolDefaults 标签下,即
<applicationPoolDefaults managedRuntimeVersion="v4.0">
<processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="true" />
</applicationPoolDefaults>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15289 次 |
| 最近记录: |