我有以下代码用于从 Azure 密钥保管库获取机密:
public static async Task<string> GetToken(string authority, string resource, string scope)
{
var authContext = new AuthenticationContext(authority);
ClientCredential clientCred = new ClientCredential(...); //app id, app secret
AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred);
if (result == null)
throw new InvalidOperationException("Failed to obtain the JWT token");
return result.AccessToken;
}
public static string GetSecret(string secretName)
{
KeyVaultClient keyVaultClient = new KeyVaultClient(GetToken);
try
{
return keyVaultClient.GetSecretAsync("my-key-vault-url", secretName).Result.Value;
}
catch(Exception ex)
{
return "Error";
}
}
我收到的错误是“访问被拒绝”,这(我认为)意味着 id、秘密和保管库的 url 都很好。但是,我不知道我可以采取什么不同的措施来修复此错误,Azure 门户中是否可能存在阻止我读取机密的设置?
要修复访问被拒绝的问题,您需要配置 Active Directory 权限。授予对 KeyVault 的访问权限。
1.使用PowerShell运行下一个命令:
Set-AzureRmKeyVaultAccessPolicy -VaultName 'XXXXXXX' -ServicePrincipalName XXXXX -PermissionsToKeys decrypt,sign,get,unwrapKey
2. 使用 Azure 门户
- 打开密钥库
- Select 访问策略从 Key Vault 资源边栏选项卡
- 单击边栏选项卡顶部的 [+ 添加访问策略] 按钮
- Click 选择校长选择您之前创建的应用程序
- 从密钥权限下拉列表中,选择“解密”、“签名”、“获取”、“UnwrapKey”权限
- 保存更改
授权应用程序使用密钥或秘密 https://azure.microsoft.com/en-us/documentation/articles/key-vault-get-started/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)