我无法获得足够的权限来使用我的应用程序访问Azure Key Vault(而不是通过用户登录)。这是我的设置:
我已将我的应用程序称为" KeyVault"每一个许可。
我的应用已在Azure Active Directory中注册。我允许他访问Key Vault:
毕竟,我尝试使用以下REST API获取访问令牌:
<span>
client_id和资源都是我之前在Active Directory中注册的应用程序的App ID。 (这是正确的吗?)
我确实得到了一个访问令牌,我用它来尝试查询我的库中的秘密。不幸的是,你可以看到它返回401错误,这是没有权限。我做错了什么?
网址来自&#34;秘密标识符&#34;关键金库中的秘密。
答案 0 :(得分:1)
答案 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
来获取它。例如: