クイックスタート: トークンを取得し、Node.js コンソール アプリからアプリの ID を使用して Microsoft Graph API を呼び出す

ようこそ。 ご要望のページを表示できません。 問題の修正に取り組んでいますが、次のリンクから目的の記事にアクセスできるかお試しください。

クイック スタート: Node.js コンソール アプリからトークンを取得し、Microsoft Graph API を呼び出す

ご不便をおかけして申し訳ありませんが、問題が解決するまで今しばらくお待ちください。

このクイックスタートでは、Node.js コンソール アプリケーションでアプリの ID を使ってアクセス トークンを取得して、Microsoft Graph API を呼び出し、ディレクトリ内のユーザーの一覧を表示する方法を示すコード サンプルをダウンロードして実行します。 このコード サンプルでは、ユーザーの ID ではなく、アプリケーション ID を使用して、無人のジョブまたは Windows サービスを実行する方法を示します。

このクイックスタートでは、クライアント資格情報の付与Node.js 用 Microsoft Authentication Library (MSAL Node) を使用します。

前提条件

サンプル アプリをダウンロードして構成する

手順 1: Azure portal でのアプリケーションの構成

このクイック スタート用サンプル コードを動作させるには、クライアント シークレットを作成し、Graph API の User.Read.All アプリケーションのアクセス許可を追加します。

Already configuredアプリケーションはこれらの属性で構成されています。

手順 2: Node.js サンプル プロジェクトをダウンロードする

注意

Enter_the_Supported_Account_Info_Here

この時点でアプリケーションを実行すると、HTTP 403 - Forbidden エラー "Insufficient privileges to complete the operation" が表示されます。 これは、すべての "アプリ専用のアクセス許可" には管理者の同意が必要であるために発生します。ディレクトリの全体管理者にお使いのアプリケーションに同意してもらう必要があります。 ご自身のロールに応じて、次のオプションのいずれかを選択します。

グローバル テナント管理者

全体管理者の場合は、[API のアクセス許可] ページに移動し、[> Enter_the_Tenant_Name_Here に管理者の同意を与えます] を選びます。

標準ユーザー

テナントの標準ユーザーの場合は、お使いのアプリケーションに管理者の同意を与えるよう全体管理者に依頼する必要があります。 これを行うには、次の URL を管理者に知らせます。

https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here

手順 4:アプリケーションの実行

コマンド プロンプトまたはコンソールで、(package.json が存在する) サンプルのルート フォルダーを探します。 このサンプルの依存関係を 1 回インストールする必要があります。

npm install

次に、コマンド プロンプトまたはコンソールを使用して、アプリケーションを実行します。

node . --op getUsers

コンソール出力には、Microsoft Entra ディレクトリ内のユーザーの一覧を表すいくつかの JSON フラグメントが表示されます。

コードについて

以降、サンプル アプリケーションのいくつかの重要な要素について説明します。

MSAL Node

MSAL Node はユーザーのサインインを処理し、Microsoft ID プラットフォームによって保護されている API にアクセスするトークンを要求するために使用するライブラリです。 説明したとおり、このクイックスタートでは、委任されたアクセス許可ではなく、アプリケーションのアクセス許可 (アプリケーション自体の ID) を使用してトークンを要求しています。 ここで使用される認証フローは、OAuth 2.0 クライアント資格情報フローと呼ばれます。 デーモン アプリでの MSAL Node の使用方法の詳細については、デーモン アプリケーションのシナリオを参照してください。

MSAL Node は、次の npm コマンドを実行してインストールできます。

npm install @azure/msal-node --save

MSAL の初期化

MSAL への参照を追加するには、次のコードを追加します。

const msal = require('@azure/msal-node');

続いて、次のコードを使用して MSAL を初期化します。

const msalConfig = {
    auth: {
        clientId: "Enter_the_Application_Id_Here",
        authority: "https://login.microsoftonline.com/Enter_the_Tenant_Id_Here",
        clientSecret: "Enter_the_Client_Secret_Here",
   }
};
const cca = new msal.ConfidentialClientApplication(msalConfig);
各値の説明: 説明
clientId Azure portal に登録されているアプリケーションの "アプリケーション (クライアント) ID"。 この値は、Azure portal のアプリの [概要] ページで確認できます。
authority ユーザーが認証するための STS エンドポイント。 通常、パブリック クラウド上では https://login.microsoftonline.com/{tenant} です。{tenant} はご自分のテナントの名前またはテナント ID です。
clientSecret Azure portal 上でアプリケーションに対して作成されるクライアント シークレット。

詳細については、ConfidentialClientApplication 用の参照ドキュメントをご覧ください。

トークンの要求

アプリの ID を使用してトークンを要求するには、acquireTokenByClientCredential メソッドを使用します。

const tokenRequest = {
    scopes: [ 'https://graph.microsoft.com/.default' ],
};

const tokenResponse = await cca.acquireTokenByClientCredential(tokenRequest);
各値の説明: 説明
tokenRequest 要求されるスコープが含まれています。 機密クライアントの場合は、{Application ID URI}/.default のような形式を使用して、要求されるスコープが Azure portal で設定されるアプリ オブジェクト内に静的に定義されたものであることを示す必要があります (Microsoft Graph では、{Application ID URI}https://graph.microsoft.com を指します)。 カスタム Web API の場合、{Application ID URI} は、Azure portal 上で [アプリケーションの登録] の [API の公開] セクションに定義されます。
tokenResponse 応答には、要求したスコープのアクセストークンが含まれています。

ヘルプとサポート

サポートが必要な場合、問題をレポートする場合、またはサポート オプションについて知りたい場合は、開発者向けのヘルプとサポートに関するページを参照してください。

次の手順

MSAL Node を使用したデーモン (コンソール) アプリ開発については、次のチュートリアルを参照してください。