通过REST使用服务到服务访问令牌访问Azure Key Vault

时间:2018-01-23 22:17:38

标签: azure azure-active-directory azure-keyvault

我无法获得足够的权限来使用我的应用程序访问Azure Key Vault(而不是通过用户登录)。这是我的设置:

我有一个天蓝色的密钥保险库设置: Key Vault Setup

我已将我的应用程序称为" KeyVault"每一个许可。

我的应用已在Azure Active Directory中注册。我允许他访问Key Vault:

App registered with Azure Active Directory App given permission to access Key Vault

毕竟,我尝试使用以下REST API获取访问令牌:

<span>

client_id和资源都是我之前在Active Directory中注册的应用程序的App ID。 (这是正确的吗?)

enter image description here

我确实得到了一个访问令牌,我用它来尝试查询我的库中的秘密。不幸的是,你可以看到它返回401错误,这是没有权限。我做错了什么?

Querying the key vault

网址来自&#34;秘密标识符&#34;关键金库中的秘密。

2 个答案:

答案 0 :(得分:1)

从AAD请求令牌时,您应将资源设置为:

https://vault.azure.net

这将确保返回的令牌被“解决”到Key Vault。

答案 1 :(得分:1)

  

client_id和resource都是我注册的应用程序的App ID   我之前展示的Active Directory。

不,资源ID不是app id。正如里奇所说,价值是https://vault.azure.net

我在我的实验室用Power Shell测试它,代码如下:

$TENANTID=""
$APPID=""
$PASSWORD=""
$result=Invoke-RestMethod -Uri https://login.microsoftonline.com/$TENANTID/oauth2/token?api-version=1.0 -Method Post -Body @{"grant_type" = "client_credentials"; "resource" = "https://vault.azure.net"; "client_id" = "$APPID"; "client_secret" = "$PASSWORD" }
$token=$result.access_token

$url="https://shui.vault.azure.net/secrets/shui01/cea20d376aee4d25a2d714df19314c26?api-version=2016-10-01"

$Headers=@{
    'authorization'="Bearer $token"

}

Invoke-RestMethod  -Uri $url  -Headers $Headers -Method GET

注意:如果要获取API输入信息,可以使用Azure Power Shell -debug来获取它。例如:

enter image description here