通过 REST 使用服务到服务访问令牌访问 Azure Key Vault
Access Azure Key Vault using Service-to-Service Access Token via REST
我无法获得足够的权限来使用我的应用程序(而不是通过用户登录)访问 Azure Key Vault。这是我的设置:
我有一个 Azure Key Vault 设置:
我已经授予我名为 "KeyVault" 的应用所有权限。
我的应用已在 Azure Active Directory 中注册。我已授予它访问 Key Vault 的权限:
完成这一切后,我尝试使用以下 REST API 获取访问令牌:
https://login.microsoftonline.com/<DOMAIN_ID>/oauth2/token
client_id 和 resource 都是我之前在 Active Directory 中注册的应用程序的应用程序 ID。 (这是正确的吗?)
我确实得到了一个访问令牌,我用它来尝试查询我的保管库中的秘密。不幸的是,正如您所看到的 return 一个 401 错误,这是没有权限的。我做错了什么?
URL 来自密钥保管库中秘密的 "Secret Identifier"。
从 AAD 请求令牌时,您应该将资源设置为:
这将确保返回的令牌 'addressed' 到 Key Vault。
The client_id and resource are both the App ID of my registered app in
Active Directory I showed earlier.
不对,资源id不是app id。正如 Rich 所说,值为 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 PowerShell-debug
获取。例如:
我无法获得足够的权限来使用我的应用程序(而不是通过用户登录)访问 Azure Key Vault。这是我的设置:
我有一个 Azure Key Vault 设置:
我已经授予我名为 "KeyVault" 的应用所有权限。
我的应用已在 Azure Active Directory 中注册。我已授予它访问 Key Vault 的权限:
完成这一切后,我尝试使用以下 REST API 获取访问令牌:
https://login.microsoftonline.com/<DOMAIN_ID>/oauth2/token
client_id 和 resource 都是我之前在 Active Directory 中注册的应用程序的应用程序 ID。 (这是正确的吗?)
我确实得到了一个访问令牌,我用它来尝试查询我的保管库中的秘密。不幸的是,正如您所看到的 return 一个 401 错误,这是没有权限的。我做错了什么?
URL 来自密钥保管库中秘密的 "Secret Identifier"。
从 AAD 请求令牌时,您应该将资源设置为:
这将确保返回的令牌 'addressed' 到 Key Vault。
The client_id and resource are both the App ID of my registered app in Active Directory I showed earlier.
不对,资源id不是app id。正如 Rich 所说,值为 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 PowerShell-debug
获取。例如: