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

Azure Key Vault Rest API获取密钥401

蓟辰沛
2023-03-14
private static async Task<object> GetKey(string uri, string token)
{
        HttpClient client = new HttpClient();

        client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
        HttpResponseMessage resp = await client.GetAsync(uri);

        return resp.Content.ReadAsStringAsync().Result;
}
var test = GetKey(
            @"https://<myVault>.vault.azure.net/keys/Test/1?api-version=2016-10-01",
            token
        );

我在Azure中的API注册可以完全访问密钥库,并且在AAD中被列为所有者。密钥库在所有网络上都列出,甚至是公共的。但有趣的是,如果我使用azure文档中的“Try It”特性,使用相同的参数,我会得到一个404响应,我认为这可能是问题的一部分?

因为这不是一个管理API,我是否可能需要对不同的资源进行身份验证?

共有1个答案

鱼志诚
2023-03-14

这个错误源于我提出的最后一个问题。Azure Key Vault的Rest API的资源是https://Vault.Azure.net/,而我使用的是https://management.Azure.com/。但是,使用对此URL的直接HTTP请求并没有提供一个令牌,使我能够进行正确的访问。我最终使用SDK与Azure Key Vault通信,即:

private async Task<string> GetAccessTokenAsync(string authority, string resource, string scope)
{
        var appCredentials = new ClientCredential(applicationId, clientSecret);
        var context = new AuthenticationContext(authority, TokenCache.DefaultShared);

        var result = await context.AcquireTokenAsync(resource, appCredentials);

        return result.AccessToken;
}

其中从SDK方法调用它为:

public async Task<string> GetKeyAsync(string vaultUrl, string vaultKey)
{
        var client = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetAccessTokenAsync), new HttpClient());
        var secret = await client.GetKeyAsync(vaultUrl, vaultKey);

        return secret.Key.ToString();
}

从main调用

string res = (new Program()).GetSecretAsync("https://<myVault>.vault.azure.net/", keyName).Result;
 类似资料:
  • 问题内容: 我尝试从KeyStore获取密钥。我通过Keytool创建了一个密钥库: keytool -genkeypair -dname“ cn = Mark Jones,ou = JavaSoft,o = Sun,c = US” -alias business2 -keypass abcdtest -keystore C:\ workspace \ XMLSample \ keystore \

  • 问题内容: 我只是想知道如何在中获取所有关键值。 我试图用一个简单的JavaScript循环来检索值 但是仅当键是从1开始的渐进数字时,它才有效。 如何显示所有键,以显示所有可用数据? 问题答案: 在ES2017中,您可以使用:

  • 我在使用来自Firebase的新FiRecovery时遇到了问题。 情境:我有一个 我使用集合(“房间”)创建房间。添加(房间) 我想做的是:我需要更新一个房间。 为此,我使用:<代码>集合('room')。doc(房间ID)。更新(update) 因此,我需要在我的收藏中的文档中添加ROOM\u ID: 有没有可能实现这一目标? 另一种方法是为自己创建一个生成的ID: 但我想避免它。

  • 说明 微信支付-获取RSA加密公钥SDK,企业付款到银行卡接口需要。 你还需要执行openssl rsa -RSAPublicKey_in -in weixin-rsa-public.pem -pubout 将命令行输出的证书内容覆盖到weixin-rsa-public.pem文件中才可使用 官方文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch

  • 我有一个基本的SpringBoot应用程序。使用Spring初始值设定项、嵌入式Tomcat、Thymeleaf模板引擎和作为可执行JAR文件的包。 在我的财产档案中: 在我的控制器中: 在模板中: 但这是我在模板中看到的,而不是电子邮件(已拍摄)