当前位置: 首页 > 知识库问答 >
问题:

使用客户端机密检索Azure KeyVault机密

张岳
2023-03-14

我正在尝试各种Azure功能,目前希望从KeyVault检索一个秘密。

直截了当地说:

我正在使用这个nuget包与我的azure资源进行交互。

我开发了一个简单的。NET核心控制台应用程序,并在本地运行。

我有一个密钥库资源,其中定义了一个处于活动状态且未过期的秘密。

我在AAD中注册了一个应用程序,因此我的本地出货。NET Core控制台应用程序在AAD中具有标识。

然后我在AAD的注册应用程序中创建了一个“客户机密”,用它来验证自己是否是应用程序。

然后我开发了一小段代码,可以检索到想要的秘密:

public class AzureAuthentication
{
    public async Task<string> GetAdminPasswordFromKeyVault()
    {
        const string clientId = "--my-client-id--";
        const string tenantId = "--my-tenant-id--";
        const string clientSecret = "--my-client-secret--";
        var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret);
        var client = new SecretClient(new Uri("https://mykeyvaultresource.vault.azure.net"), credentials);
        var secret = await client.GetSecretAsync("admincreds");
        return secret.Value.Value;
    }
}

我错过了一些非常明显的东西吗?或者有一些延迟(

共有2个答案

令狐宣
2023-03-14

确保你的广告应用程序(服务负责人)在你的keyvault中拥有正确的权限-

葛霄
2023-03-14

我测试你的代码和获取权限,它工作正常。

从您的屏幕截图来看,您似乎没有将与广告应用相关的正确服务主体添加到访问策略

如果添加与广告应用程序相关的服务主体,它将显示为应用程序,而不是复合标识

因此,当您添加它时,您可以直接搜索客户端Id(即应用程序Id)应用程序注册的名称,确保您添加了正确的。

 类似资料:
  • 我试图用身份验证详细信息建立到业务中心服务的连接,但它给了我一个错误。然而当我在邮递员上测试它时,它工作得很完美。

  • 我使用。NET Core2.0和ASP.NET Core2.0进行应用程序开发。“测试”应用程序是一个。NET核心控制台应用程序。我正在编写的核心代码是一个类库。一旦适当的测试。我选择这样做是因为我暂时不会使用它(它正在替换旧的ASPNET代码)。 无论如何,由于我必须处理各种服务的大量API密钥,所以我决定使用Microsoft Azure Key Vault来存储密钥。我有这一切设置,并理解这

  • 在https://KeyCloak.gitbooks.io/server-developer-guide/content/v/2.2/topics/admin-rest-api.html中使用CURL的示例适用于从其Docker映像运行KeyCloak。 为了实现应用程序的最终目标形状,我希望使用客户端ID和机密而不是用户名+密码进行身份验证。 该令牌会导致对admin REST API的调用出现

  • 我无法从azure key vault检索到运行在azure windows VM中的.NET控制台应用程序的秘密。下面是我使用过的代码,我已经给了服务主体在密钥库中的所有权限。