次の方法で共有


クイック スタート: サンプル Web アプリでユーザーをサインインする

適用対象: 次の内容が従業員テナントに適用されることを示す白いチェック マーク記号が付いた緑の円。 従業員テナント :次の内容が外部テナントに適用されることを示す白いチェック マーク記号が付いた緑の円。 外部テナント (詳細)

このクイック スタートでは、サンプル Web アプリを使用して、従業員テナントでユーザーをサインインさせ、Microsoft Graph API を呼び出す方法を示します。 サンプル アプリでは、 Microsoft 認証ライブラリ を使用して認証を処理します。

開始する前に、このページの上部にある [テナントの種類 の選択] セレクターを使用して、テナントの種類を選択します。 Microsoft Entra ID には、 従業員外部の 2 つのテナント構成が用意されています。 従業員テナントの構成は、従業員、内部アプリ、およびその他の組織リソースを対象としています。 外部テナントは、顧客向けのアプリ用です。

[前提条件]

  • アクティブなサブスクリプションを持つ Azure アカウント。 アカウントをまだお持ちでない場合は、 無料でアカウントを作成してください
  • この Azure アカウントには、アプリケーションを管理するためのアクセス許可が必要です。 次の Microsoft Entra ロールには、必要なアクセス許可が含まれます。
    • アプリケーション管理者
    • アプリケーション開発者
  • 従業員テナント。 既定のディレクトリを使用するか、 新しいテナントを設定できます。
  • Visual Studio Code または別のコード エディター。
  • この組織のディレクトリ内のアカウント専用に構成された Microsoft Entra 管理センターに新しいアプリを登録します。 詳細については、「 アプリケーションの登録 」を参照してください。 後で使用するために、アプリケーション の [概要 ] ページから次の値を記録します。
    • アプリケーション (クライアント) ID
    • ディレクトリ (テナント) ID
  • Web プラットフォーム構成を使用して、次のリダイレクト URI を追加します。 詳細については、「 アプリケーションにリダイレクト URI を追加する方法 」を参照してください。
    • リダイレクト URI: http://localhost:3000/auth/redirect
    • フロント チャネル ログアウト URL: https://localhost:5001/signout-callback-oidc
  • アプリの登録にクライアント シークレットを追加します。 運用アプリではクライアント シークレットを使用しないでください。 代わりに、証明書またはフェデレーション資格情報を使用してください。 詳細については、「 アプリケーションに資格情報を追加する」を参照してください
  • Node.js

サンプル Web アプリケーションを複製またはダウンロードする

サンプル アプリケーションを取得するには、GitHub から複製するか、 .zip ファイルとしてダウンロードします。

  • .zip ファイルをダウンロードし、名前の長さが 260 文字未満のファイル パスに抽出するか、リポジトリを複製します。

  • サンプルを複製するには、コマンド プロンプトを開き、プロジェクトを作成する場所に移動し、次のコマンドを入力します。

    git clone https://github.com/Azure-Samples/ms-identity-node.git
    

サンプル Web アプリを構成する

サンプル アプリを使用してユーザーをサインインさせるには、アプリとテナントの詳細でユーザーを更新する必要があります。

ms-identity-node フォルダーで App/.env ファイルを開き、次のプレースホルダーを置き換えます。

Variable Description
Enter_the_Cloud_Instance_Id_Here アプリケーションが登録されている Azure クラウド インスタンス https://login.microsoftonline.com/ (末尾のスラッシュを含む)
Enter_the_Tenant_Info_here テナント ID またはプライマリ ドメイン contoso.microsoft.com または aaaabbbb-0000-cccc-1111-dddd2222eeee
Enter_the_Application_Id_Here 登録したアプリケーションのクライアント ID 00001111-aaaa-2222-bbbb-3333cccc4444
Enter_the_Client_Secret_Here 登録したアプリケーションのクライアント シークレット A1b-C2d_E3f.H4i,J5k?L6m!N7o-P8q_R9s.T0u
Enter_the_Graph_Endpoint_Here アプリが呼び出す Microsoft Graph API クラウド インスタンス https://graph.microsoft.com/ (末尾のスラッシュを含む)
Enter_the_Express_Session_Secret_Here Express セッション Cookie の署名に使用されるランダムな文字列 A1b-C2d_E3f.H4...

変更を加えた後、ファイルは次のスニペットのようになります。

CLOUD_INSTANCE=https://login.microsoftonline.com/
TENANT_ID=aaaabbbb-0000-cccc-1111-dddd2222eeee
CLIENT_ID=00001111-aaaa-2222-bbbb-3333cccc4444
CLIENT_SECRET=A1b-C2d_E3f.H4...

REDIRECT_URI=http://localhost:3000/auth/redirect
POST_LOGOUT_REDIRECT_URI=http://localhost:3000

GRAPH_API_ENDPOINT=https://graph.microsoft.com/

EXPRESS_SESSION_SECRET=6DP6v09eLiW7f1E65B8k

サンプル Web アプリの実行とテスト

サンプル アプリを構成しました。 実行とテストに進むことができます。

  1. サーバーを起動するには、プロジェクト ディレクトリ内から次のコマンドを実行します。

    cd App
    npm install
    npm start
    
  2. http://localhost:3000/ にアクセスします。

  3. [ サインイン ] を選択してサインイン プロセスを開始します。

初めてサインインすると、アプリケーションによるサインインとプロファイルへのアクセスを許可する同意を求められます。 正常にサインインすると、アプリケーションのホーム ページにリダイレクトされます。

アプリのしくみ

このサンプルでは、localhost のポート 3000 で Web サーバーをホストします。 Web ブラウザーがこのアドレスにアクセスすると、アプリによってホーム ページがレンダリングされます。 ユーザーが [サインイン] を選択すると、アプリは MSAL Node ライブラリによって生成された URL を使用して、ブラウザーを Microsoft Entra サインイン画面にリダイレクトします。 ユーザーの同意後、ブラウザーは ID とアクセス トークンと共にユーザーをアプリケーションのホーム ページにリダイレクトします。

このクイック スタートでは、サンプル Web アプリを使用して、外部テナントのユーザーをサインインさせる方法を示します。 サンプル アプリでは、 Microsoft 認証ライブラリ を使用して認証を処理します。

開始する前に、このページの上部にある [テナントの種類 の選択] セレクターを使用して、テナントの種類を選択します。 Microsoft Entra ID には、 従業員外部の 2 つのテナント構成が用意されています。 従業員テナントの構成は、従業員、内部アプリ、およびその他の組織リソースを対象としています。 外部テナントは、顧客向けのアプリ用です。

[前提条件]

サンプル Web アプリケーションを複製またはダウンロードする

サンプル アプリケーションを取得するには、GitHub から複製するか、.zip ファイルとしてダウンロードします。

  • サンプルを複製するには、コマンド プロンプトを開き、プロジェクトを作成する場所に移動し、次のコマンドを入力します。

    git clone https://github.com/Azure-Samples/ms-identity-ciam-javascript-tutorial.git
    
  • または、 サンプル .zip ファイルをダウンロードし、名前の長さが 260 文字未満のファイル パスに抽出します。

プロジェクトの依存関係をインストールする

  1. コンソール ウィンドウを開き、Node.js サンプル アプリを含むディレクトリに移動します。

    cd 1-Authentication\5-sign-in-express\App
    
  2. 次のコマンドを実行して、アプリの依存関係をインストールします。

    npm install
    

サンプル Web アプリを構成する

サンプル アプリを使用してユーザーをサインインさせるには、アプリとテナントの詳細でユーザーを更新する必要があります。

  1. コード エディターで、 App\authConfig.jsファイルを 開きます。

  2. プレースホルダーを見つけます。

    • Enter_the_Application_Id_Here をクリックし、先ほど登録したアプリのアプリケーション (クライアント) ID に置き換えます。
    • Enter_the_Tenant_Subdomain_Here ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、テナントのプライマリ ドメインが contoso.onmicrosoft.comされている場合は、 contosoを使用します。 テナント名がない場合は、 テナントの詳細を読み取る方法について説明します。
    • Enter_the_Client_Secret_Here を選択し、先ほどコピーしたアプリ シークレットの値に置き換えます。

サンプル Web アプリの実行とテスト

Web アプリ Node.js サンプルをテストできるようになりました。 Node.js サーバーを起動し、 http://localhost:3000のブラウザーからアクセスする必要があります。

  1. ターミナルで、次のコマンドを実行します。

    npm start 
    
  2. ブラウザーを開き、 http://localhost:3000に移動します。 次のスクリーンショットのようなページが表示されます。

    ノード Web アプリへのサインインのスクリーンショット。

  3. ページの読み込みが完了したら、メッセージが表示されたら [サインイン ] を選択します。

  4. サインイン ページで、 メール アドレスを入力し、[ 次へ] を選択し、 パスワードを入力して、[ サインイン] を選択します。 アカウントをお持ちでない場合は、[アカウントなし] を選択してください 。1 つの リンクを作成して、サインアップ フローを開始します。

  5. サインアップ オプションを選択した場合は、メール、ワンタイム パスコード、新しいパスワード、その他のアカウントの詳細を入力した後、サインアップ フロー全体を完了します。 次のスクリーンショットのようなページが表示されます。 サインイン オプションを選択すると、同様のページが表示されます。

    ビュー ID トークン要求のスクリーンショット。

  6. [ サインアウト ] を選択してユーザーを Web アプリからサインアウトするか、[ ID トークン要求の表示 ] を選択して Microsoft Entra から返された ID トークン要求を表示します。

動作方法

ユーザーが [サインイン ] リンクを選択すると、アプリは認証要求を開始し、ユーザーを Microsoft Entra 外部 ID にリダイレクトします。 表示されるサインインまたはサインアップ ページで、ユーザーが正常にサインインするか、アカウントを作成すると、Microsoft Entra External ID は ID トークンをアプリに返します。 アプリは ID トークンを検証し、要求を読み取り、セキュリティで保護されたページをユーザーに返します。

ユーザーが [サインアウト ] リンクを選択すると、アプリはセッションをクリアし、ユーザーを Microsoft Entra External ID サインアウト エンドポイントにリダイレクトして、ユーザーがサインアウトしたことを通知します。

実行したサンプルと同様のアプリを構築する場合は、「 独自の Node.js Web アプリケーションの記事でユーザーをサインイン させる」の手順を実行します。