如何在本地获取 C# IIS 应用程序 运行 的 Azure KeyVault 机密
How get Azure KeyVault secret for C# IIS application running on premise
是否有任何方法可以使用 IIS 应用程序池标识获取密钥保管库机密以进行身份验证?
从 Azure KeyVault 读取值的典型解决方案是
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
result = await keyVaultClient.GetSecretAsync(secretUrl).ConfigureAwait(false);
虽然这在 visual studio 下工作,甚至对于 Windows/console 应用程序,它也不适用于 IIS 应用程序 - 即使应用程序池配置了一个本来可以工作的标识.
迄今为止我发现的所有解决方案都需要一个服务原则并提供其 ID 和秘密——并且它在本地存储我试图避免的秘密。
示例:https://blog.bitscry.com/2019/02/13/using-azure-key-vault-in-a-console-application/
var keyClient = new KeyVaultClient(async (authority, resource, scope) => {
var adCredential = new ClientCredential(clientId, clientSecret);
var authenticationContext = new AuthenticationContext(authority, null);
return (await authenticationContext.AcquireTokenAsync(resource, adCredential)).AccessToken;
});
Is there any way to get a key vault secret using the IIS app pool identity to authenticate?
对于 local development authentication,AzureServiceTokenProvider
使用 Visual Studio 获取令牌,Azure 命令行界面 (CLI),或 Azure AD 集成身份验证。
使用Visual Studio和Azure CLI都需要登录到azure。并且用户应该添加到 Azure keyvault 的 Access Policy
。
使用 Azure ad 集成身份验证,还需要将 service principal
添加到 Access Policy
中。
但是,如果您想使用 IIS 应用程序池标识进行身份验证,则无法将 Application Pool Identity 帐户添加到 Azure keyvault。因此,您无法避免使用服务主体的 id 和 secret 进行身份验证。
是否有任何方法可以使用 IIS 应用程序池标识获取密钥保管库机密以进行身份验证?
从 Azure KeyVault 读取值的典型解决方案是
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
result = await keyVaultClient.GetSecretAsync(secretUrl).ConfigureAwait(false);
虽然这在 visual studio 下工作,甚至对于 Windows/console 应用程序,它也不适用于 IIS 应用程序 - 即使应用程序池配置了一个本来可以工作的标识.
迄今为止我发现的所有解决方案都需要一个服务原则并提供其 ID 和秘密——并且它在本地存储我试图避免的秘密。
示例:https://blog.bitscry.com/2019/02/13/using-azure-key-vault-in-a-console-application/
var keyClient = new KeyVaultClient(async (authority, resource, scope) => {
var adCredential = new ClientCredential(clientId, clientSecret);
var authenticationContext = new AuthenticationContext(authority, null);
return (await authenticationContext.AcquireTokenAsync(resource, adCredential)).AccessToken;
});
Is there any way to get a key vault secret using the IIS app pool identity to authenticate?
对于 local development authentication,AzureServiceTokenProvider
使用 Visual Studio 获取令牌,Azure 命令行界面 (CLI),或 Azure AD 集成身份验证。
使用Visual Studio和Azure CLI都需要登录到azure。并且用户应该添加到 Azure keyvault 的 Access Policy
。
使用 Azure ad 集成身份验证,还需要将 service principal
添加到 Access Policy
中。
但是,如果您想使用 IIS 应用程序池标识进行身份验证,则无法将 Application Pool Identity 帐户添加到 Azure keyvault。因此,您无法避免使用服务主体的 id 和 secret 进行身份验证。