繁体   English   中英

将 Azure Active Directory 与 Azure 密钥库一起使用

[英]Using Azure Active Directory with Azure Key Vault

我仍在学习 Azure Key Vault。

这是设置:我有一个 Windows 服务,需要访问密码。 出于安全原因,密码将存储在 AKV 中。

然后使用 Azure 门户创建 AKV 资源,以及将存储密码 (TheSecret) 的“秘密”。

然后添加权限,以便我的 AD 登录可以访问 TheSecret。

据我所知,Azure 端设置正确。

现在我尝试从控制台应用程序访问 TheSecret。

这是基于文档中示例代码的代码:

var keyVaultUrl = @"https://css-key-vault.vault.azure.net/secrets/TheSecret/<TheGuid>";

var client = new SecretClient(new Uri(keyVaultUrl), new DefaultAzureCredential();

KeyVaultSecret theSecret = client.GetSecret("TheSecret");
Console.WriteLine($"Secret is returned with name {theSecret.Name} and value {theSecret.Value}");

当我运行它时,我得到一个 404 错误。

如果我将 URL 放入浏览器中,它会返回以下消息:

{"error":{"code":"Unauthorized","message":"AKV10000: Request is missing a Bearer or PoP token."}}

我怎样才能让它工作?

我期望当 Windows 服务运行时,该服务将使用它正在运行的 Windows 帐户,并以某种方式将此凭据信息传递给 Azure 以授权获取秘密并授权但我不清楚需要做什么才能将此信息传递给 Azure。 如果有其他方法可以做到这一点,我也对此持开放态度。

问题与此行有关:

var client = new SecretClient(new Uri(keyVaultUrl), new DefaultAzureCredential();

使用 DefaultAzureCredential 时,它假定存在关联的托管标识,该标识将用于检索访问令牌以对请求进行身份验证/授权。

对于控制台应用程序,您需要从 Azure AD 检索令牌,并使用它:

https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-netcore-daemon

PS:您需要为此在您的广告中创建一个应用程序/密码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM