MSAL ノードでパブリック クライアント アプリケーション オブジェクトを初期化する

この記事では、MSAL ノードで PublicClientApplication オブジェクトを初期化する方法と、権限を構成する方法について説明します。

Prerequisites

アプリケーションを初期化する前に、まずアプリケーションをMicrosoft Entra 管理センターに登録し、アプリケーションとMicrosoft ID プラットフォームの間に信頼関係を確立する必要があります。

アプリを登録した後、Microsoft Entra 管理センターで見つかる次の値の一部またはすべてが必要になります。

価値 必須 説明
アプリケーション (クライアント) ID 必須 Microsoft ID プラットフォーム内でアプリケーションを一意に識別する GUID。
権威 Optional アプリケーションの ID プロバイダー URL ( インスタンス) と サインイン対象ユーザー 。 インスタンスとサインイン対象ユーザーが連結されると、権限が構成 されます
ディレクトリ (テナント) ID Optional 組織専用の基幹業務アプリケーションを構築する場合は、ディレクトリ (テナント) ID を指定します(多くの場合、 シングルテナント アプリケーションと呼ばれます)。
リダイレクト URI Optional Web アプリを構築する場合、redirectUriは、ID プロバイダー (Microsoft ID プラットフォーム) が発行したセキュリティ トークンを返す場所を指定します。

PublicClientApplication オブジェクトの初期化

MSAL ノードを使用するには、 PublicClientApplication オブジェクトをインスタンス化する必要があります。 すべての PublicClientApplication に対して、PKCE(コード交換用証明キー)の使用をサポートしており、強く推奨しています。 使用パターンは PKCE サンプルで示されています。

import * as msal from "@azure/msal-node";

const clientConfig = {
    auth: {
        clientId: "your_client_id",
        authority: "your_authority",
    }
};
const pca = new msal.PublicClientApplication(clientConfig);

構成の基本

ノードの構成オプションには、認証フローごとにcommonパラメーターとspecificパラメーターがあります。

  • client_id は、パブリック クライアント アプリケーションを初期化するために必須です
  • authority構成中にユーザーが設定しない場合、既定値は https://login.microsoftonline.com/common/

構成に関するその他のオプションについては、「MSAL ノードの構成」を参照してください。

権限の構成

既定では、MSAL は common テナントで構成されます。これは、(B2C ではなく) 個人アカウントを許可するマルチテナント アプリケーションおよびアプリケーションに使用されます。

const msalConfig = {
    auth: {
        clientId: 'your_client_id',
        authority: 'https://login.microsoftonline.com/common/'
    }
};

アプリケーションの対象が単一テナントである場合は、次のように、テナント ID を含む authority を指定する必要があります。

const msalConfig = {
    auth: {
        clientId: 'your_client_id',
        authority: 'https://login.microsoftonline.com/{your_tenant_id}'
    }
};

アプリケーションで "https://login.live.com" や IdentityServer などの OIDC 準拠の別の機関を使用している場合は、 knownAuthorities フィールドに指定し、 protocolMode"OIDC" に設定する必要があります。

const msalConfig = {
    auth: {
        clientId: 'your_client_id',
        authority: 'https://login.live.com',
        knownAuthorities: ["login.live.com"],
        protocolMode: "OIDC"
    }
};

次のステップ