Azure Key Vault 身份验证

问题描述 投票:0回答:1

我认为我很难理解公共客户端应用程序的身份验证,特别是与 Azure 密钥保管库相关的身份验证。

我已经能够编写一些 C# 来构建公共客户端应用程序,并在 Azure 中注册,并且我可以使用代理和我的 Windows 域登录进行身份验证,以获取 oauth 令牌,而无需提供任何密码。我已成功使用该 oauth 令牌调用密钥保管库的 RESTful API,并检索了一些机密。我已使用 RBAC 授予必要的权限。

但是,我知道我应该使用 SecretClient 来完成此任务。 SecretClient 需要凭据,但我拥有的是 oauth 令牌。如何创建使用我的 oauth 令牌的凭证?

我一直在使用 DefaultAzureCredential 对象,但我只能使用环境变量(使用机密客户端,这不是我想要的)或我的 Visual Studio 凭据来使其工作。这在测试电脑上不起作用。

如有任何帮助,我们将不胜感激!

下面是我认为可以在加入域的 PC 上运行的代码示例,其中用户使用其 Entra ID 登录。

        string tenantId = "<my tenant>";

        DefaultAzureCredentialOptions options = new DefaultAzureCredentialOptions();
        options.TenantId = tenantId;
        options.ExcludeEnvironmentCredential = true;
        DefaultAzureCredential credential = new DefaultAzureCredential(options);


        SecretClient client = new SecretClient(new Uri("https://mykeyvault.vault.azure.net/"), credential);

        string secretValue = client.GetSecret("mysecret").Value.Value;

        MessageBox.Show(secretValue);
c# oauth-2.0 azure-keyvault .net-8.0 defaultazurecredential
1个回答
0
投票

但是,我知道我应该使用 SecretClient 来完成此任务。 SecretClient 需要凭据,但我拥有的是 OAuth 令牌。如何创建使用我的 OAuth 令牌的凭证?

根据此MS-Document,没有凭据就无法访问

SecretClient

SecretClient
需要凭据才能通过 Azure 服务进行身份验证,使用
DefaultAzureCredential
ClientSecretCredential.

ClientSecretCredential
中,您还需要传递clientId、clientSecret和tenantId来从KeyVault获取机密。

代码:

using Azure.Security.KeyVault.Secrets;
using Azure.Identity;


namespace sample
{
    class Program
    {
        static async Task Main(string[] args)
        {
            string clientId = "xxxx";
            string clientSecret = "xxxxx";
            string tenantId = "xxxxx";

            var clientCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);
            var client = new SecretClient(new Uri("https://<keyvaultname>.vault.azure.net/"), clientCredential);

            string secretValue = client.GetSecret("secret").Value.Value;

            Console.WriteLine(secretValue);
        }
    }
}

到目前为止,您只需要使用 PCA(OAuth 令牌)流程。

参考: 适用于 .NET 的 Azure Key Vault 秘密客户端库 - 适用于 .NET 开发人员的 Azure |微软学习

© www.soinside.com 2019 - 2024. All rights reserved.