Share via


サンプルのバニラ JavaScript シングルページ アプリケーションでユーザーをサインインさせる

このガイドでは、サンプルの Vanilla JavaScript (JS) シングルページ アプリケーション (SPA) を使用して、認証を SPA に追加する方法を示します。 SPA を使用すると、ユーザーは外部テナントを使用してサインインおよびサインアウトできます。 このサンプルでは、JavaScript 用 Microsoft Authentication Library (MSAL.js) を使用して認証を処理します。

前提条件

Microsoft Entra 管理センターで SPA を登録する

Microsoft Entra を使用してアプリケーションでユーザーをサインインできるようにするには、作成するアプリケーションを Microsoft Entra 外部 ID に認識させる必要があります。 アプリの登録によって、アプリと Microsoft Entra の間に信頼関係が確立されます。 アプリケーションを登録すると、外部 ID によって、アプリケーション (クライアント) ID と呼ばれる一意識別子が生成されます。これは、認証要求を作成するときにアプリを識別するために使用される値です。

Microsoft Entra 管理センターにアプリを登録する方法を次の手順に示します。

  1. アプリケーション開発者以上として Microsoft Entra 管理センターにサインインします。

  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコン を使用し、[ディレクトリとサブスクリプション] メニューから外部テナントに切り替えます。

  3. [ID]>[アプリケーション]>[アプリの登録] を参照します。

  4. [+ 新規登録] を選択します。

  5. 表示される [アプリケーションの登録] ページで、次のようにします。

    1. アプリのユーザーに表示されるわかりやすいアプリケーションの [名前] を入力します (例: ciam-client-app)。
    2. [サポートされているアカウントの種類] で、 [この組織のディレクトリ内のアカウントのみ] を選択します。
  6. [登録] を選択します。

  7. 登録が成功すると、アプリケーションの [概要] ペインが表示されます。 アプリケーションのソース コードで使用するアプリケーション (クライアント) ID を記録します。

アプリの登録に対してアプリの種類を指定するには、次の手順に従います。

  1. [管理] で、 [認証] を選択します。
  2. [プラットフォームの構成] ページで、[プラットフォームの追加] を選択し、[シングルページ アプリケーション] を選びます。
  3. [リダイレクト URI] には、「http://localhost:3000」と入力します。
  4. [構成] を選択して変更を保存します。

API のアクセス許可を付与する

  1. [アプリの登録] ページで、作成したアプリケーション ("ciam-client-app" など) を選択して、その [概要] ページを開きます。

  2. [管理] の下にある [API のアクセス許可] を選択します。

  3. [構成されたアクセス許可] の下で [アクセス許可の追加] を選択します。

  4. [Microsoft API] タブを選択します。

  5. [よく使用される Microsoft API] セクションで、[Microsoft Graph] を選択します。

  6. [委任されたアクセス許可] オプションを選択します。

  7. [アクセス許可の選択] セクションで、openidoffline_access の両方のアクセス許可を検索して選択します。

  8. [アクセス許可の追加] ボタンを選択します

  9. この時点で、アクセス許可が正しく割り当てられます。 ただし、このテナントは顧客のテナントであるため、コンシューマー ユーザー自身がこれらのアクセス許可に同意することはできません。 管理者は、テナント内のすべてのユーザーに代わってこれらのアクセス許可に同意する必要があります。

    1. [<ご使用のテナント名> に管理者の同意を与えます] を選択してから、[はい] を選択します。
    2. [最新の情報に更新] を選択し、両方のスコープの [状態] に "<ご使用のテナント名> に付与されました" と表示されていることを確認します。

ユーザー フローを作成する

次の手順に従って、顧客がアプリケーションにサインインまたはサインアップするために使用できるユーザー フローを作成します。

  1. Microsoft Entra 管理センターに少なくとも外部 ID ユーザー フロー管理者としてサインインします。

  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコン を使用して、[ディレクトリとサブスクリプション] メニューから外部テナントに切り替えます。

  3. [ID]>[External Identities]>[ユーザー フロー] に移動します。

  4. [+ 新しいユーザー フロー] を選択します。

  5. [作成] ページで、次のようにします。

    1. ユーザー フローの [名前] ("SignInSignUpSample" など) を入力します。

    2. [ID プロバイダー] の一覧で、[メール アカウント] を選択します。 この ID プロバイダーを使用すると、ユーザーが自分のメール アドレスを使用してサインインまたはサインアップできます。

      注意

      追加の ID プロバイダーは、それらとのフェデレーションを設定した後にのみここに一覧表示されます。 たとえば、Google または Facebook とのフェデレーションを設定すると、それらの追加 ID プロバイダーをここで選択できます。

    3. [メール アカウント] で、2 つのオプションのいずれかを選択できます。 このチュートリアルでは、[Email with password] (メール アドレスとパスワード) を選択します。

      • [Email with password] (メール アドレスとパスワード): 新しいユーザーは、サインイン名としてメール アドレスを、その最初の要素の資格情報としてパスワードを使用してサインアップおよびサインインできます。
      • メールのワンタイム パスコード: 新しいユーザーが、サインイン名としてメール アドレスを、最初の要素の資格情報としてメールのワンタイム パスコードを使用してサインアップおよびサインインできるようにします。 このオプションをユーザー フロー レベルで使用可能にするには、メールのワンタイム パスコードをテナント レベルで有効にする必要があります ([All Identity Providers] (すべての ID プロバイダー)>[メールのワンタイム パスコード])。
    4. [ユーザー属性] で、サインアップ時にユーザーから収集する属性を選択します。 [さらに表示] を選択すると、[国または地域][表示名][郵便番号] の属性と要求を選択できます。 [OK] を選択します。 (ユーザーは、初めてサインアップするときにのみ属性の入力を求められます)。

  6. [作成] を選択します 新しいユーザー フローは [ユーザー フロー] の一覧に表示されます。 必要に応じて、ページを更新してください。

セルフサービス パスワード リセットを有効にするには、「セルフサービス パスワード リセットを有効にする」の記事の手順を使用します。

SPA をユーザー フローに関連付ける

ユーザー フローには多くのアプリケーションを関連付けることができますが、1 つのアプリケーションは 1 つのユーザー フローにしか関連付けることができません。 ユーザー フローを使用すると、特定のアプリケーション用のユーザー エクスペリエンスを構成できます。 たとえば、ユーザーにメール アドレスを使用してサインインまたはサインアップすることを要求するユーザー フローを構成できます。

  1. サイドバー メニューで、[ID] を選択します。

  2. [External Identities][User flows] (ユーザー フロー) の順に選択します。

  3. [ユーザー フロー] ページで、前に作成した [ユーザー フロー名] (SignInSignUpSample など) を選びます。

  4. [使用] で、[アプリケーション] を選択します。

  5. [アプリケーションの追加] をクリックします。

  6. 一覧からアプリケーション ("ciam-client-app" など) を選択するか、検索ボックスを使用してアプリケーションを見つけ、それを選択します。

  7. [選択] を選択します。

サンプル SPA を複製またはダウンロードする

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

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

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

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

  1. サンプル プロジェクトのルート ディレクトリでターミナル ウィンドウを開き、次のスニペットを入力してプロジェクト フォルダーに移動します。

    cd 1-Authentication\0-sign-in-vanillajs\App
    
  2. プロジェクトの依存関係をインストールします。

    npm install
    

サンプル SPA を構成する

  1. App/public/authConfig.js を開き、以下を Microsoft Entra 管理センターから取得した値に置き換えます。

    • Enter_the_Application_Id_Here を、前に登録したアプリのアプリケーション (クライアント) ID に置き換えます。
    • Enter_the_Tenant_Subdomain_Here を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、テナントのプライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナント名がない場合は、テナントの詳細を読み取る方法を確認してください
  2. ファイルを保存します。

プロジェクトを実行してサインインする

  1. 新しいターミナルを開き、次のコマンドを実行して Express Web サーバーを起動します。

    npm start
    
  2. Web ブラウザーを開き、http://localhost:3000/ に移動します。

  3. 登録されているアカウントで外部テナントにサインインします。

  4. サインインすると、次のスクリーンショットに示すように、[サインアウト] ボタンの横に表示名が表示されます。

  5. SPA には、[プロファイル情報の要求] というボタンが表示されます。 プロファイル データを表示するには、それを選択します。

    バニラ JS SPA へのサインインのスクリーンショット。

アプリケーションからサインアウトする

  1. アプリケーションからサインアウトするには、ナビゲーション バーで [サインアウト] を選択します。
  2. サインアウトするアカウントを確認するウィンドウが表示されます。
  3. 正常にサインアウトすると、すべてのブラウザー ウィンドウを閉じることを勧める最後のウィンドウが表示されます。