Schützen einer Einzelseiten-Webanwendung mit nicht interaktiver Anmeldung

Schützen Sie eine Einzelseiten-Webanwendung mit Microsoft Entra ID, auch wenn sich ein*e Benutzer*in nicht bei Microsoft Entra ID anmelden kann.

Um diesen nicht-interaktiven Authentifizierungsflow zu bilden, erstellen wir zunächst einen sicheren Azure Functions-Webdienst, der für den Bezug von Zugriffstoken von Microsoft Entra ID verantwortlich ist. Dieser Webdienst ist nur für Ihre Einzelseiten-Webanwendung verfügbar.

So zeigen Sie Ihre Azure Maps-Kontoauthentifizierungsdetails im Azure-Portal an:

  1. Melden Sie sich beim Azure-Portal an.

  2. Navigieren Sie zum Menü des Azure-Portals. Wählen Sie Alle Ressourcen und dann Ihr Azure Maps-Konto aus.

  3. Wählen Sie im linken Bereich unter Einstellungen die Option Authentifizierung aus.

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

Bei der Erstellung des Azure Maps-Kontos werden drei Werte erstellt. Sie werden verwendet, um zwei Authentifizierungsarten in Azure Maps zu unterstützen:

  • Microsoft Entra-Authentifizierung: Die Client ID stellt das Konto dar, das für REST-API-Anforderungen verwendet werden soll. Der Wert Client ID sollte in der Anwendungskonfiguration gespeichert und später abgerufen werden, bevor Azure Maps-HTTP-Anforderungen mit Microsoft Entra-Authentifizierung übermittelt werden.
  • Authentifizierung über gemeinsam verwendete Schlüssel: Der Primärschlüssel (Primary Key) und der Sekundärschlüssel (Secondary Key) werden als Abonnementschlüssel für die Authentifizierung über gemeinsam verwendete Schlüssel verwendet. Bei der Authentifizierung über gemeinsam verwendete Schlüssel wird der durch das Azure Maps-Konto generierte Schlüssel bei jeder Anforderung an Azure Maps übergeben. Es wird empfohlen, die Schlüssel regelmäßig neu zu generieren. Um aktuelle Verbindungen während der Neugenerierung aufrechtzuerhalten, werden zwei Schlüssel bereitgestellt. Ein Schlüssel kann verwendet werden, während der andere neu generiert wird. Bei der Neugenerierung Ihrer Schlüssel müssen Sie alle Anwendungen, die auf dieses Konto zugreifen, so aktualisieren, dass die neuen Schlüssel verwendet werden. Weitere Informationen finden Sie unter Authentifizierung mit Azure Maps.

Tipp

Azure Maps kann Zugriffstoken aus Benutzeranmeldungs- oder interaktiven Flows unterstützen. Interaktive Flows ermöglichen einen eingeschränkteren Bereich der Zugriffssperrung und Geheimhaltungsverwaltung.

Erstellen einer Azure-Funktion

Erstellen einer gesicherten Webdienstanwendung, die für die Authentifizierung bei Microsoft Entra ID zuständig ist:

  1. Erstellen Sie eine Funktion im Azure-Portal. Weitere Informationen finden Sie unter Erste Schritte mit Azure Functions.

  2. Konfigurieren Sie die CORS-Richtlinie für die Azure-Funktion so, dass die Einzelseiten-Webanwendung darauf zugreifen kann. Die CORS-Richtlinie gewährleistet, dass Browser-Clients nur die zulässigen Ursprünge Ihrer Webanwendung verwenden. Weitere Informationen finden Sie unter Hinzufügen der CORS-Funktion.

  3. Fügen Sie der Azure-Funktion eine systemseitig zugewiesene Identität hinzu, um das Erstellen eines Dienstprinzipals für die Authentifizierung bei Microsoft Entra ID zu ermöglichen.

  4. Gewähren Sie der systemseitig zugewiesenen Identität rollenbasierten Zugriff auf das Azure Maps-Konto. Weitere Informationen finden Sie unter Gewähren von rollenbasierter Zugriffssteuerung für Benutzer in Azure Maps.

  5. Schreiben Sie Code für die Azure-Funktion, mit dem sie Azure Maps-Zugriffstoken mittels einer systemseitig zugewiesenen Identität mit einem der unterstützten Mechanismen oder dem REST-Protokoll abruft. Weitere Informationen finden Sie unter Erhalten von Token für Azure-Ressourcen

    Hier ein Beispiel für ein REST-Protokoll:

    GET /MSI/token?resource=https://atlas.microsoft.com/&api-version=2019-08-01 HTTP/1.1
    Host: localhost:4141
    

    Und hier eine Beispielantwort:

    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
        "access_token": "eyJ0eXAi…",
        "expires_on": "1586984735",
        "resource": "https://atlas.microsoft.com/",
        "token_type": "Bearer",
        "client_id": "..."
    }
    
  6. Konfigurieren Sie die Sicherheit für den HttpTrigger der Azure-Funktion:

    1. Erstellen eines Funktionszugriffsschlüssels
    2. Sichern Sie den HTTP-Endpunkt für die in Produktion befindliche Azure-Funktion.
  7. Konfigurieren Sie eine Azure Maps Web SDK Webanwendung.

    //URL to custom endpoint to fetch Access token
    var url = 'https://{App-Name}.azurewebsites.net/api/{Function-Name}?code={API-Key}';
    
    var map = new atlas.Map('myMap', {
                center: [-122.33, 47.6],
                zoom: 12,
                language: 'en-US',
                view: "Auto",
            authOptions: {
                authType: "anonymous",
                clientId: "<insert>", // azure map account client id
                getToken: function(resolve, reject, map) {
                    fetch(url).then(function(response) {
                        return response.text();
                    }).then(function(token) {
                        resolve(token);
                    });
                }
            }
        });
    
        // use the following events to debug, you can remove them at any time.
        map.events.add("tokenacquired", function () {
            console.log("token acquired");
        });
        map.events.add("error", function (err) {
            console.log(JSON.stringify(err.error));
        });
    

Gewähren von rollenbasierter Zugriffssteuerung für Benutzer in Azure Maps

Sie können die rollenbasierte Zugriffssteuerung in Azure (Azure RBAC) verwenden, indem Sie mindestens einer Azure Maps-Rollendefinition eine Microsoft Entra-Gruppe oder einen Sicherheitsprinzipal zuweisen.

Die verfügbaren Azure-Rollendefinitionen für Azure Maps finden Sie unter Anzeigen der integrierten Azure Maps-Rollendefinitionen.

Ausführliche Schritte zum Zuweisen einer verfügbaren Azure Maps-Rolle zur erstellten verwalteten Identität oder zum Dienstprinzipal finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

Informationen zum effizienten Verwalten des Zugriffs auf Azure Maps-Apps und -Ressourcen für eine Vielzahl von Benutzer*innen finden Sie unter Verwalten des Zugriffs auf Apps und Ressourcen mithilfe von Microsoft Entra-Gruppen.

Wichtig

Damit Benutzer*innen sich bei einer Anwendung authentifizieren können, müssen sie zuerst in Microsoft Entra ID erstellt werden. Weitere Informationen finden Sie unter Hinzufügen oder Löschen von Benutzer*innen mithilfe von Microsoft Entra.

Informationen zur effektiven Verwaltung eines großen Verzeichnisses für Benutzer*innen finden Sie in der Dokumentation mit grundlegenden Informationen zu Microsoft Entra ID.

Warnung

Integrierte Azure Maps-Rollendefinitionen bieten einen sehr umfangreichen Autorisierungszugriff auf viele Azure Maps-REST-APIs. Informationen, wie Sie den Zugriff auf APIs auf ein Mindestmaß beschränken, finden Sie unter Erstellen einer benutzerdefinierten Rollendefinition und Zuweisen der systemseitig zugewiesenen Identität zur benutzerdefinierten Rollendefinition. Dadurch wird die geringste Berechtigung aktiviert, die für den Zugriff der Anwendung auf Azure Maps erforderlich ist.

Nächste Schritte

Weiteres Verstehen eines Szenarios einer Einzelseiten-Webanwendung:

Suchen der API-Nutzungsmetriken für Ihr Azure Maps-Konto:

Sehen Sie sich weitere Beispiele an, die zeigen, wie Sie Microsoft Entra ID in Azure Maps integrieren: