從 Go 應用程式向 Azure 資源驗證的其他方法

本文列出應用程式可用來向 Azure 資源進行驗證的其他方法。 這些方法較少被使用。 如果可能,請使用在 Azure SDK 總覽中所列的認證 Go 應用程式連接到 Azure 的方法之一。

互動式瀏覽器驗證

此方法透過 InteractiveBrowserCredential 在預設系統中收集使用者憑證來驗證應用程式。

互動式瀏覽器驗證可讓應用程式用於互動式登入認證允許的所有作業。 因此,如果您是訂用帳戶的擁有者或系統管理員,您的程式代碼就具有該訂用帳戶中大部分資源的固有存取權,而不需要指派任何特定許可權。 因此,僅在實驗時使用互動式瀏覽器驗證。

啟用應用程式以進行互動式瀏覽器驗證

執行下列步驟,讓應用程式能夠透過互動式瀏覽器流程進行驗證。 這些步驟也適用於稍後所述的 裝置程式代碼驗證。 只有當你在程式碼中使用InteractiveBrowserCredential時,才需要遵循這個流程。

  1. 在 Azure 入口網站,前往 Microsoft Entra ID,並在左側選單選擇 應用程式註冊 。

  2. 選擇你的應用程式註冊,然後選擇 認證。

  3. 在 [進階設定] 下,選取 [是] 以允許 [公用用戶端流程]。

  4. 選取 儲存 以套用變更。

  5. 要授權該應用程式使用特定資源,請前往該資源,選擇 API 權限,並啟用 Microsoft Graph 及其他你想存取的資源。 Microsoft Graph 預設為啟用。

    重要

    當您第一次登入時,您也必須是租戶的系統管理員,才能授予應用程式同意。

如果你無法設定 Microsoft Entra ID 的裝置程式碼流程選項,你的應用程式可能需要多租戶。 要做這項變更,請到認證面板,在任一組織目錄中選擇「帳戶」(在「支援帳戶類型」中),然後選擇「允許公開客戶端流程」的「是」。

使用 InteractiveBrowserCredential 的範例

以下範例示範如何使用一個 InteractiveBrowserCredential 在 armsubscription 套件中進行 SubscriptionsClient 驗證:

package main

import (
	"context"
	"log"

	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription"
)

func main() {
	cred, err := azidentity.NewInteractiveBrowserCredential(nil)
	if err != nil {
		// TODO: handle error
	}
	ctx := context.Background()
	clientFactory, err := armsubscription.NewClientFactory(cred, nil)
	if err != nil {
		// TODO: handle error
	}
	res, err := clientFactory.NewSubscriptionsClient().Get(ctx, "<your_subscription_id>", nil)
	if err != nil {
		// TODO: handle error
	}
	// You could use response here. We use blank identifier for just demo purposes.
	_ = res
}

如需更精確的控制,例如設定重新導向 URI,您可以透過 RedirectURL 類型,提供特定的參數,如 InteractiveBrowserCredential 至 InteractiveBrowserCredentialOptions。

裝置程式代碼驗證

此方法會以互動方式驗證具有有限 UI 的裝置上的使用者(通常是沒有鍵盤的裝置):

  1. 當應用程式嘗試驗證時,認證會提示使用者輸入URL和驗證碼。
  2. 使用者會在另一台支援瀏覽器的裝置(電腦、智慧型手機等)上造訪該網址並輸入程式碼。
  3. 使用者遵循瀏覽器中的一般驗證程式。
  4. 成功驗證時,應用程式會在裝置上進行驗證。

如需詳細資訊,請參閱 Microsoft身分識別平臺和 OAuth 2.0 裝置授權授與流程。

開發環境中的裝置程式碼驗證可讓應用程式進行互動式登入認證所允許的所有作業。 因此,如果您是訂用帳戶的擁有者或系統管理員,您的程式代碼就具有該訂用帳戶中大部分資源的固有存取權,而不需要指派任何特定許可權。 不過,您可以使用這個方法搭配特定的用戶端識別符,而不是預設,您可以為其指派特定許可權。

使用 DeviceCodeCredential 套件中的 azidentity 類型來實作裝置程式碼驗證。