有些時候 Azure CLI 或 Azure Portal 都無法完成特定操作時,就需要靠 Azure REST API 來完成一些沒有 UI 的操作,這種操作通常都不太常見,也通常不需要自動化,所以臨時想要執行特定操作時,快速的設定就變的很重要。這篇文章我將介紹一個非常簡單的方法取得 Bearer Token,幫助你更快的完成 Azure REST API 呼叫。
其實說穿了,要能夠成功呼叫 Azure REST APIs 最重要的動作就是取得 Bearer Token (Access Token) 來通過認證與授權,你只要知道如何取得 Access Token 並放入 Postman 就可以呼叫所有 Azure REST API 了。取得 Access Token 主要有以下兩種方法:
-
透過 Azure CLI 快速取得 Access Token
az account get-access-token
-
透過 OAuth 2.0 的標準授權流程取得 Access Token
這個步驟稍微複雜些,設定步驟也比較多,也是許多人覺得有門檻的地方。你必須先瞭解 Service Principal 的建立方法,然後還要搞定 Azure 資源的 IAM 授權,然後還要理解 OAuth 2.0 的授權流程,取得 ClientId
與 ClientSecret
之後,還要呼叫 Authorization Endpoint 與 Token Endpoint 才能得到 Access Token,這些流程牽涉許多專有名詞,對一個都沒碰過的新手來說,文件還沒看完就頭暈了。
這篇文章主要說明如何透過 Azure CLI 快速取得 Access Token,並透過簡單的設定步驟呼叫 Azure REST APIs!
透過 Azure CLI 快速取得 Access Token
-
登入 Azure CLI
az login --tenant 'TenantId'
-
切換 訂用帳戶 (Subscription)
az account set --subscription 'SubscriptionId'
你可以使用 az account show
取得當前選取 訂用帳戶 (Subscription) 資訊:
az account show -o json
-
建立一個臨時的 accessToken
(Bearer Token)
你可以使用以下命令快速產生一組 Access Token 來給 Postman 或 cURL 使用,預設這個 Access Token 只能存取目前選取的 訂用帳戶 (Subscription) 下的所有資源:
$token = $(az account get-access-token --query accessToken --output tsv)
注意: 這個 Access Token 的有效期限只有 5 ~ 60 分鐘,如果過期的話,只要重新執行一次再次產生新的 Access Token 即可。
使用 cURL 測試 Bearer Token 是否有效
這裡我以 Resource Groups - List 為例,發出一個 HTTP GET
要求,取回目前訂用帳戶下所有 Resource Group (資源群組) 清單:
$subscriptionId = "b9b835dd-2e05-429b-b589-c1d0150db9e0"
$requestUrl = "https://management.azure.com/subscriptions/${subscriptionId}/resourcegroups?api-version=2021-04-01"
curl -s -X 'GET' --header "Authorization: Bearer $token" $requestUrl
若要取回 Web App 的總數,可以使用以下 PowerShell 命令:
(curl -s -X 'GET' --header "Authorization: Bearer $token" $requestUrl | ConvertFrom-Json).value.count
使用 Postman 呼叫 Azure REST APIs
-
建立 Collections 集合
我們在 Collections 中建立一個名為 Azure REST APIs 的集合。
-
設定 Azure REST APIs 集合的 Authorization
頁籤
將 Type 設定成 Bearer Token
然後將之前取得的 $token
內容寫入 Token
欄位
-
設定 Azure REST APIs 集合的 Variables
頁籤 (集合變數)
加入一個 subscriptionId
變數,並在 INITIAL VALUE
填入你的 SubscriptionId
-
在集合中建立 Resource Groups - List 要求 (Add request)
- Name:
Resource Groups - List
- HTTP Method:
GET
- Request URI:
https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups?api-version=2021-04-01
當你可以順利取得 Resource Group 清單,也意味著你已經可以順利透過 Postman 呼叫 Azure REST APIs 了! 👍
相關連結