在 LINQPad 中取得 Azure AD Auth Token

  • 13
  • 0
  • 2021-03-21

LINQPad 是我工作上很常使用的工具,可以很方便的連到資料庫並且快速撰寫 LINQ 語法查詢資料,或是想快速測試一些程式碼的時候可以很方便的使用,在 LINQPad 6.10 的更新裡面,提供了一個新的方法,可以方便我們登入 AAD 並且取的 Auth Token,如此一來就可以很方便的測試一些需要微軟 oAuth 驗證的 API,尤其是我工作上會很常需要測試 Azure API ,如果要重頭寫登入驗證那段是比較花時間,透過這個新的方法可以快速的取得 Token 來測試 API,本文就快速的介紹如何使用。

前言

LINQPad 是我工作上很常使用的工具,可以很方便的連到資料庫並且快速撰寫 LINQ 語法查詢資料,或是想快速測試一些程式碼的時候可以很方便的使用,在 LINQPad 6.10 的更新裡面,提供了一個新的方法,可以方便我們登入 AAD 並且取的 Auth Token,如此一來就可以很方便的測試一些需要微軟 oAuth 驗證的 API,尤其是我工作上會很常需要測試 Azure API ,如果要重頭寫登入驗證那段是比較花時間,透過這個新的方法可以快速的取得 Token 來測試 API,本文就快速的介紹如何使用。

實做

取得 Auth Token

首先到 LINQPad 官網下載最新版 LINQPad,確定版本是在 6.10 以上即可。透過新的 LINQPad 方法 Util.ActiveDirectory.AcquireTokenAsync 來取得驗證的 Token,執行的時候會跳出網頁畫面讓我們輸入 Microsotft ID 來做身份的驗證,輸入完之後就可以取得 Token 了。

string tenantID = "(your Azure tenant ID)";

string token = Util.ActiveDirectory.AcquireTokenAsync (
    $"https://login.microsoftonline.com/{tenantID}",
    "https://management.core.windows.net/",
    "user@domain.com").Result.AccessToken;

程式碼中的 Tenant ID 可以在 Azure AD 的概觀中的找到租用戶識別碼user@domain.com 則輸入登入 Microsoft 驗證的帳號。如此就可以取得驗證的 Auth Token 了。

Token 會暫存一陣子,直到重新開啟 LINQPad,所以第二次執行不一定會再跳出登入畫面

呼叫 Azure API

再來就是呼叫 Azure API 來操作 Azure,這邊使用 Microsoft.Azure.Management.Fluent 這個官方套件來存取 Azure 服務。輸入底下程式碼,就可以取得指定的訂閱的授權操作介面 IAzure,之後就看要透過這個套件來存取哪些 Azure API 了。

var tokenCredentials = new TokenCredentials (token);
var azureCredentials = new AzureCredentials (tokenCredentials, tokenCredentials, tenantID,
                                             AzureEnvironment.AzureGlobalCloud);
	
RestClient client = RestClient.Configure()
                              .WithEnvironment (AzureEnvironment.AzureGlobalCloud)
                              .WithCredentials (azureCredentials)
                              .Build();

string subscriptionID = "(your Azure subscription ID)";
IAzure managementAPI = Azure.Authenticate (client, tenantID).WithSubscription (subscriptionID);

這邊用最簡單的範例,用以下程式碼就可以列出所有的 ResourceGroup 了。

managementAPI.ResourceGroups.List().Select(X=>X.Name).Dump();

結論

LINQPad 是我在工作上常使用的工具,建議可以付費使用,會有更多好用的功能,也才可以支援 intellisense,才會更加的好用。他還有很多好用的地方,這次針對 AAD 登入驗證的方法,對我工作上要測試 Azure API 的時候,真的方便了許多,所以特別記錄一下。

參考資料

  1. LINQPad
  2. azure-libraries-for-net