Pertanyaan Key Vault mengembalikan 401 dengan token akses (MSI PowerShell Function App)


Saya mencoba untuk terhubung Keyvault dengan saya Fungsi Azure menggunakan PowerShell. Identitas Layanan Terkelola (MSI) telah diaktifkan, dan di Keyvault saya memberikan kebijakan akses 'mendapatkan' dan 'daftar' MSI. Menggunakan skrip di bawah ini saya berhasil mendapatkan token akses, tetapi ketika saya membuat permintaan ke Keyvault, saya selalu menerima tanggapan 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

Ada yang tahu mengapa token itu tidak cukup?


5
2018-03-15 23:31


asal


Jawaban:


Coba ubah sumber daya URI menjadi https://vault.azure.net (tanpa garis miring). Validasi token pada server mengharapkan string yang sama persis saat mengembalikannya di header WWW-Otentikasi 401 respons. Secara umum, Key Vault mengembalikan 401 untuk kasus-kasus di mana token hilang atau gagal validasi (tiga kasus umum adalah token kedaluwarsa, memiliki URI sumber daya yang salah, atau dikeluarkan oleh penyewa yang berbeda dari yang terkait dengan kubah).


6
2018-03-16 00:47