Olá Pessoal,
Hoje vamos ver uma maneira mais pratica para conseguir o AccessToken para autenticar chamadas REST a partir de uma sessão do modulo Az para gerenciar recursos do Microsoft Azure pelo Powershell.
Primeiro, certifique-se que você tem o módulo instalado corretamente, caso não tenha, basta instalar pela galeria com o seguinte comando:
Install-Module -Name Az -Scope CurrentUser
Para se autenticar no Azure voce deverá executar o comando Add-AzAccount, que é o comando sem alias do Login-AzAccount:
Em seguida, vamos utilizar o comando Get-AzContext para armazenar o contexto da autenticação e ler os tokens que ele adquiriu, filtrando pelo TenantId e pelo registro mais recente.
$Context = Get-AzContext
$Token = ($Context.TokenCache.ReadItems() | Where-Object -Property TenantId -EQ -Value $Context.Tenant.TenantId | Sort-Object -Property ExpiresOn -Descending)[0].AccessToken
Uma vez obtido o Token vamos contruir a chamada REST, passando os valores corretos no cabeçalho:
$RestMethod = @{
Method = 'Get'
Uri = 'https://management.azure.com/subscriptions/{0}/resourcegroups?api-version=2017-05-10' -f $($Context.Subscription.Id)
Headers = @{
'Authorization' = 'Bearer {0}' -f $Token
'Content-Type' = 'application/json'
}
}
$ResourceGroups = Invoke-RestMethod @RestMethod
Para recuperar os valores basta expandir a propriedade Value, neste exemplo estamos recuperando a lista dos Resource Groups da subscrição:
Script Completo:
Add-AzAccount
$Context = Get-AzContext
$Token = ($Context.TokenCache.ReadItems() | Where-Object -Property TenantId -EQ -Value $Context.Tenant.TenantId | Sort-Object -Property ExpiresOn -Descending)[0].AccessToken
$RestMethod = @{
Method = 'Get'
Uri = 'https://management.azure.com/subscriptions/{0}/resourcegroups?api-version=2017-05-10' -f $($Context.Subscription.Id)
Headers = @{
'Authorization' = 'Bearer {0}' -f $Token
'Content-Type' = 'application/json'
}
}
$ResourceGroups = Invoke-RestMethod @RestMethod | Select-Object -ExpandProperty Value
$ResourceGroups
Espero que tenha gostado dessa dica.
Dúvidas? Sugestões? Comente!
Até a próxima!
1 Comments
UP