是否可以使用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 /控制台应用程序中都可以使用,但是即使在应用程序池中配置了可以正常工作的身份,它也不适用于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;
});
答案 0 :(得分:0)
是否可以使用IIS应用程序池身份进行身份验证来获取密钥库机密?
对于local development authentication,AzureServiceTokenProvider
使用 Visual Studio , Azure命令行界面(CLI)或 Azure AD获取令牌集成身份验证。
使用Visual Studio和Azure CLI都需要登录才能使用Azure。并且应该将用户添加到Azure密钥仓库的Access Policy
。
使用Azure广告集成身份验证,还需要将service principal
添加到Access Policy
中。
但是,如果要使用IIS应用程序池身份进行身份验证,则无法将Application Pool Identity帐户添加到Azure密钥库中。因此,您无法避免使用服务主体的ID和密码进行身份验证。