使用使用者登入保護 Web 應用程式

下列指南與裝載於網頁伺服器上的應用程式相關、可維護多個商務案例,以及部署到 Web 伺服器。 應用程式必須只為 Microsoft Entra 使用者提供受保護的資源。 此案例的目標是要讓 Web 應用程式能夠向 Microsoft Entra ID 進行驗證,並代表使用者來呼叫 Azure 地圖服務 REST API。

若要在 Azure 入口網站中檢視 Azure 地圖服務的帳戶驗證詳細資料:

  1. 登入 Azure 入口網站

  2. 瀏覽至 Azure 入口網站功能表。 選取 [所有資源],然後選取您的 Azure 地圖服務帳戶。

  3. 在左窗格中的 [設定] 下選取 [驗證]

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

建立 Azure 地圖服務帳戶時,系統會建立三個值。 其會用來支援 Azure 地圖服務中兩種類型的驗證:

  • Microsoft Entra 驗證Client ID 代表要用於 REST API 要求的帳戶。 Client ID 的值應儲存在應用程式設定中,且應先擷取該值,再提出使用 Microsoft Entra 驗證的 Azure 地圖服務 HTTP 要求。
  • 共用金鑰驗證: Primary KeySecondary Key 會用作共用金鑰驗證的訂用帳戶金鑰。 共用金鑰驗證需依靠由 Azure 地圖服務帳戶所產生的金鑰連同每個要求,傳遞至 Azure 地圖服務。 建議您定期重新產生金鑰。 為了在重新產生作業期間維護目前的連線,系統會提供兩個金鑰。 您可以在重新產生作業期間,使用已重新產生的金鑰。 當您重新產生金鑰時,必須更新任何存取此帳戶的應用程式,以使用新的金鑰。 如需詳細資訊,請參閱驗證 Azure 地圖服務

在 Microsoft Entra ID 中建立應用程式註冊

您必須在 Microsoft Entra ID 中建立 Web 應用程式,讓使用者能夠登入該應用程式。 接著,Web 應用程式會將使用者存取權委派給 Azure 地圖服務 REST API。

  1. 在 Azure 入口網站的 Azure 服務清單中,選取 [Microsoft Entra ID]> [應用程式註冊]> [新增註冊]

    A screenshot showing application registration in Microsoft Entra ID.

  2. 輸入名稱、選擇 [支援帳戶類型],並提供重新導向 URI,此 URI 代表 Microsoft Entra ID 核發權杖的 url,以及裝載地圖控制項的 url。 如需詳細資訊,請參閱 Microsoft Entra ID 案例:登入使用者的 Web 應用程式。 完成 Microsoft Entra 案例中提供的步驟。

  3. 應用程式註冊完成後,確認使用者是否能夠登入應用程式。 一旦登入能夠運作後,就可以將應用程式的委派存取權授與 Azure 地圖服務 REST API。

  4. 若要將委派的 API 權限指派給 Azure 地圖服務,請移至應用程式,並選取 [API 權限]> [新增權限]。 在 [組織使用的 API] 底下選取 [Azure 地圖服務]

    A screenshot showing add app API permissions.

  5. 選取 [存取 Azure 地圖服務] 旁的核取方塊,並接著選取 [新增權限]

    A screenshot showing select app API permissions.

  6. 利用應用程式秘密設定應用程式註冊,以啟用 Web 應用程式來呼叫 Azure 地圖服務 REST API,如需詳細步驟,請參閱呼叫 Web API 的 Web 應用程式:應用程式註冊。 必須有祕密,才能代表使用者向 Microsoft Entra 進行驗證。 應用程式註冊憑證或祕密應該儲存在安全存放區中,以供 Web 應用程式擷取,向 Microsoft Entra ID 進行驗證。

    • 如果應用程式已設定 Microsoft Entra ID 應用程式註冊和祕密,則可略過此步驟。

    提示

    如果應用程式裝載於 Azure 環境中,建議您使用 Azure 資源的受控識別和 Azure Key Vault 執行個體,以藉由取得可存取 Azure Key Vault 秘密或憑證的存取權杖來存取秘密。 若要連線到 Azure Key Vault 以擷取秘密,請參閱透過受控識別進行連線的教學課程

  7. 為 Azure 地圖服務 Web SDK 實作安全權杖端點來存取權杖。

  8. 如需為使用者或群組設定 Azure 角色型存取控制 (Azure RBAC),請參閱授與使用者的角色型存取權

  9. 使用 Azure 地圖服務 Web SDK 來設定 Web 應用程式頁面,以存取安全權杖端點。

var map = new atlas.Map("map", {
        center: [-122.33, 47.64],
        zoom: 12,
        language: "en-US",
        authOptions: {
            authType: "anonymous",
            clientId: "<insert>",  // azure map account client id
            getToken: function (resolve, reject, map) {
                var xhttp = new XMLHttpRequest();
                xhttp.open("GET", "/api/token", true); // the url path maps to the token endpoint.
                xhttp.onreadystatechange = function () {
                    if (this.readyState === 4 && this.status === 200) {
                        resolve(this.responseText);
                    } else if (this.status !== 200) {
                        reject(this.responseText);
                    }
                };

                xhttp.send();
            }
        }
    });
    map.events.add("tokenacquired", function () {
        console.log("token acquired");
    });
    map.events.add("error", function (err) {
        console.log(JSON.stringify(err.error));
    });

將使用者的角色型存取權授與給 Azure 地圖服務

您可以將 Microsoft Entra 群組或安全性主體,指派給一或多個 Azure 地圖服務角色定義,來授與 Azure 角色型存取控制 (Azure RBAC)

若要檢視 Azure 地圖服務的可用 Azure 角色定義,請參閱檢視內建的 Azure 地圖服務角色定義

如需將可用 Azure 地圖服務角色,指派給已建立的受控識別或服務主體詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色

若要有效率地管理大量使用者的 Azure 地圖服務應用程式和資源存取權,請參閱 Microsoft Entra 群組

重要

若要允許使用者驗證應用程式,必須先在 Microsoft Entra ID 中建立該使用者。 如需詳細資訊,請參閱使用 Microsoft Entra ID 新增或刪除使用者

若要了解如何有效管理使用者的大型目錄,請參閱 Microsoft Entra ID

警告

Azure 地圖服務的內建角色定義,可為許多 Azure 地圖服務 REST API 提供廣泛的授權存取權。 若要將 API 的存取權限制到最低限度,請參閱建立自訂角色定義,並將系統指派的身分識別指派給自訂角色定義。 這可讓應用程式獲得存取 Azure 地圖服務所需的最低權限。

下一步

進一步了解 Web 應用程式案例:

尋找 Azure 地圖服務帳戶的 API 使用計量:

探索範例,了解如何使用 Azure 地圖服務與 Microsoft Entra ID 整合: