我正在尝试连接到Keyvault和我的Azure 函数 using 电源外壳。
托管服务身份 (MSI) 已打开,并且在 Keyvault 中我授予了 MSI“获取”和“列表”访问策略。
使用下面的脚本我成功获得了访问令牌,但是当我向 Keyvault 发出请求时,我总是收到 401 响应。
$vaultName = $Env:KeyVaultName
$vaultSecretName = $Env:VaultSecretName
$tokenAuthURI = $Env:MSI_ENDPOINT + "?resource=https://vault.azure.net/&api-version=2017-09-01"
$tokenResponse = Invoke-RestMethod -Method Get -Headers @{"Secret"="$env:MSI_SECRET"} -Uri $tokenAuthURI
$accessToken = $tokenResponse.access_token
$headers = @{ 'Authorization' = "Bearer $accessToken" }
$queryUrl = "https://$vaultName.vault.azure.net/keys/" +$vaultSecretName + "?api-version=2016-10-01"
$keyResponse = Invoke-RestMethod -Method GET -Uri $queryUrl -Headers $headers
知道为什么令牌不够吗?
尝试将资源 URI 更改为https://vault.azure.net(没有尾部斜杠)。服务器上的令牌验证需要与 401 响应的 WWW-Authenticate 标头中返回的字符串完全相同的字符串。一般来说,如果令牌丢失或验证失败(三种常见情况是令牌已过期、资源 URI 不正确或由与保管库关联的不同租户颁发),Key Vault 将返回 401。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)