Go アプリから Azure リソースに対して認証する追加の方法

この記事では、アプリが Azure リソースに対する認証に使用できるその他の方法を示します。 これらのメソッドはあまり一般的ではありません。 可能であれば、Azure SDK の概要を使用して Azure に Go アプリを認証する方法の 1 つを使用します。

対話型ブラウザー認証

このメソッドは、既定のシステムでユーザー資格情報を収集することで、 InteractiveBrowserCredential を使用してアプリケーションを認証します。

対話型ブラウザー認証を使用すると、対話型ログイン資格情報によって許可されるすべての操作に対してアプリケーションが有効になります。 その結果、サブスクリプションの所有者または管理者である場合、特定のアクセス許可を割り当てなくても、コードはそのサブスクリプションのほとんどのリソースに固有のアクセス権を持ちます。 このため、対話型ブラウザー認証は実験にのみ使用してください。

対話型ブラウザー認証のアプリケーションを有効にする

アプリケーションが対話型ブラウザー フローを使用して認証できるようにするには、次の手順を実行します。 これらの手順は、後で説明する デバイス コード認証 でも機能します。 コードで InteractiveBrowserCredential を使用している場合にのみ、このプロセスに従う必要があります。

  1. Azure portal で Microsoft Entra ID に移動し、左側のメニューで [アプリの登録] を選択します。

  2. アプリの登録を選択し、[ 認証] を選択します。

  3. [詳細設定] で、[パブリック クライアント フローを許可する] で [はい] を選択します。

  4. [保存] を選択して変更を適用します。

  5. 特定のリソースに対してアプリケーションを承認するには、該当するリソースに移動し、[ API のアクセス許可] を選択して、 アクセスする Microsoft Graph やその他のリソースを有効にします。 Microsoft Graph は通常、既定で有効になっています。

    重要

    また、初めてサインインするときにアプリケーションに同意を付与するには、テナントの管理者である必要があります。

Microsoft Entra ID でデバイス コード フロー オプションを構成できない場合は、アプリケーションがマルチテナントである必要がある場合があります。 この変更を行うには、[認証] パネルに移動し、任意の組織ディレクトリ ([サポートされているアカウントの種類] で) [アカウント] を選択し、[パブリック クライアント フローを許可する] で [はい] を選択します。

InteractiveBrowserCredential の使用例

次の例では、InteractiveBrowserCredentialを使用して、SubscriptionsClient パッケージ内のarmsubscriptionで認証を行う方法を示します。

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. ユーザーは、別のブラウザー対応デバイス (コンピューター、スマートフォンなど) の URL にアクセスし、コードを入力します。
  3. ユーザーは、ブラウザーで通常の認証プロセスに従います。
  4. 認証が成功すると、アプリケーションはデバイスで認証されます。

詳細については、 Microsoft ID プラットフォームと OAuth 2.0 デバイス承認付与フローを参照してください。

開発環境でのデバイス コード認証により、対話型サインイン資格情報によって許可されるすべての操作に対してアプリケーションが有効になります。 その結果、サブスクリプションの所有者または管理者である場合、特定のアクセス許可を割り当てなくても、コードはそのサブスクリプションのほとんどのリソースに固有のアクセス権を持ちます。 ただし、このメソッドは、特定のアクセス許可を割り当てることができる既定のクライアント ID ではなく、特定のクライアント ID で使用できます。

デバイス コード認証を実装するには、DeviceCodeCredential パッケージのazidentityの種類を使用します。