ユーザー サインインでシングル ページ アプリケーションをセキュリティで保護する

次のガイドは、コンテンツ サーバーでホストされているか、Web サーバーの依存関係が最小限であるアプリケーションについて説明します。 このアプリケーションは、Microsoft Entra ユーザーに対してのみセキュリティで保護したリソースが用意されています。 このシナリオの目的は、Microsoft Entra ID に対して Web アプリケーションを認証するとともに、ユーザーに代わって Azure Maps REST API を呼び出せるようにすることです。

Azure portal で Azure Maps アカウントの認証の詳細を表示するには:

  1. Azure portal にサインインします。

  2. Azure portal メニューに移動します。 [すべてのリソース] を選択し、Azure Maps アカウントを選択します。

  3. 左側のペインの [設定] で、 [認証] を選択します。

    Screenshot showing your Azure Maps authentication options in the Azure portal.

Azure Maps アカウントの作成時に、3 つの値が作成されます。 それらは、Azure Maps で次の 2 種類の認証をサポートするために使用されます。

  • Microsoft Entra 認証: Client ID は、REST API 要求に使用されるアカウントを表します。 Client ID 値は、アプリケーション構成に格納してから、Microsoft Entra 認証を使用する Azure Maps HTTP 要求を行う前に取得する必要があります。
  • 共有キー認証: Primary Key および Secondary Key は、共有キー認証のサブスクリプション キーとして使用されます。 共有キー認証は、Azure Maps への各要求で、Azure Maps アカウントによって生成されたキーを渡す処理に依存しています。 キーを定期的に再生成することをお勧めします。 再生成中に現在の接続を維持するために、2 つのキーが用意されています。 1 つのキーを、もう一方を再生成しているときに使用できます。 キーを再生成したら、新しいキーを使用するように、このアカウントにアクセスするすべてのアプリケーションを更新する必要があります。 詳細については、「Azure Maps による認証」を参照してください

Microsoft Entra ID にアプリケーションの登録を作成する

ユーザーがサインインできるよう、Microsoft Entra ID に Web アプリケーションを作成します。 Web アプリケーションは、ユーザー アクセスを Azure Maps REST API へ委任します。

  1. Azure portal の Azure サービスの一覧で、[Microsoft Entra ID]>[アプリの登録]>[新規登録] の順に選択します。

    A screenshot showing application registration in Microsoft Entra ID.

  2. [名前] を入力して、[サポートされているアカウントの種類] を選択し、リダイレクト URI を指定します。この URL は、Microsoft Entra ID でトークンが発行されている URL を表し、マップ コントロールがホストされている URL でもあります。 詳細なサンプルについては、Azure Maps の Microsoft Entra ID サンプルに関するページを参照してください。 次に、 [登録] を選択します。

  3. 委任された API アクセス許可を Azure Maps に割り当てるには、アプリケーションに移動します。 次に、 [アプリの登録] で、 [API のアクセス許可]>[アクセス許可の追加] の順に選択します。 [所属する組織で使用している API] で、「Azure Maps」を検索して選択します。

    Screenshot showing a list of APIs my organization uses.

  4. [Access Azure Maps] (Azure Maps へのアクセス) の横にあるチェック ボックスをオンにしてから、 [アクセス許可の追加] を選択します。

    Screenshot showing the request app API permissions screen.

  5. oauth2AllowImplicitFlowを有効にする: これを有効にするには、アプリ登録の [マニフェスト] セクションで oauth2AllowImplicitFlowtrue に設定します。

  6. Web SDK で使うため、Microsoft Entra アプリ ID と Microsoft Entra テナント ID をアプリの登録からコピーします。 Microsoft Entra アプリの登録の詳細と x-ms-client-id を、Azure マップ アカウントから Web SDK に追加します。

        <link rel="stylesheet" href="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.css" type="text/css" />
        <script src="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.js" />
        <script>
            var map = new atlas.Map("map", {
                center: [-122.33, 47.64],
                zoom: 12,
                language: "en-US",
                authOptions: {
                    authType: "aad",
                    clientId: "<insert>",  // azure map account client id
                    aadAppId: "<insert>",  // azure ad app registration id
                    aadTenant: "<insert>", // azure ad tenant id
                    aadInstance: "https://login.microsoftonline.com/"
                }
            });
        </script>   
    
  7. ユーザーまたはグループの Azure ロールベースのアクセス制御 (Azure RBAC) を構成します。 Azure RBAC を有効にするには、次のセクションを参照してください。

Azure Maps に対するロールベースのアクセスをユーザーに許可する

Microsoft Entra グループまたはセキュリティ プリンシパルを 1 つまたは複数の Azure Maps ロール定義に割り当てることで、"Azure ロールベースのアクセス制御 (Azure RBAC)" を許可できます。

Azure Maps で使用できる Azure ロールの定義については、「組み込みの Azure Maps ロールの定義を表示する」のセクションを参照してください。

作成されたマネージド ID またはサービス プリンシパルに、使用可能な Azure Maps ロールを割り当てる方法の詳細な手順については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください

大量のユーザーの Azure Maps アプリとリソース アクセスを効率的に管理するには、「Microsoft Entra グループ」を参照してください。

重要

ユーザーがアプリケーションに対する認証を許可されるようにするには、まずそのユーザーを Microsoft Entra ID に作成する必要があります。 詳細については、Microsoft Entra ID を使用してユーザーを追加または削除するを参照してください。

ユーザーの大規模なディレクトリを効果的に管理する方法については、「Microsoft Entra ID」を参照してください。

警告

Azure Maps の組み込みロールの定義は、多くの Azure Maps REST API に対する非常に大きな承認アクセスを提供します。 API のアクセスを最小限に制限するには、カスタム ロールの定義を作成して、システム割り当て ID をカスタム ロールの定義に割り当てる方法に関する記事を参照してください。 これにより、アプリケーションが Azure Maps にアクセスするために必要な最小限の権限が有効になります。

次のステップ

シングル ページ アプリケーションのシナリオの詳細については、次を参考にしてください。

Azure Maps アカウントにおける API 使用状況メトリックを確認します。

Microsoft Entra ID と Azure Maps を統合する方法を示すサンプルを確認します。