Udostępnij za pośrednictwem


Jak zabezpieczyć jednostronicową aplikację internetową przy użyciu logowania nieinterakcyjnego

Zabezpiecz jednostronicową aplikację internetową przy użyciu identyfikatora Entra firmy Microsoft, nawet jeśli użytkownik nie może zalogować się do identyfikatora Entra firmy Microsoft.

Aby utworzyć ten nieinterakcyjny przepływ uwierzytelniania, najpierw utwórz bezpieczną usługę internetową funkcji platformy Azure, która jest odpowiedzialna za uzyskiwanie tokenów dostępu z identyfikatora Entra firmy Microsoft. Ta usługa internetowa jest dostępna wyłącznie dla jednostronicowej aplikacji internetowej.

Aby wyświetlić szczegóły uwierzytelniania konta usługi Azure Maps w witrynie Azure Portal:

  1. Zaloguj się w witrynie Azure Portal.

  2. Przejdź do menu witryny Azure Portal. Wybierz pozycję Wszystkie zasoby, a następnie wybierz konto usługi Azure Maps.

  3. W obszarze Ustawienia w okienku po lewej stronie wybierz pozycję Uwierzytelnianie.

    Zrzut ekranu przedstawiający opcje uwierzytelniania usługi Azure Maps w witrynie Azure Portal.

Podczas tworzenia konta usługi Azure Maps są tworzone trzy wartości. Są one używane do obsługi dwóch typów uwierzytelniania w usłudze Azure Maps:

  • Uwierzytelnianie Firmy Microsoft Entra: Client ID reprezentuje konto, które ma być używane na potrzeby żądań interfejsu API REST. Wartość Client ID powinna być przechowywana w konfiguracji aplikacji, a następnie należy ją pobrać przed wykonaniem żądań HTTP usługi Azure Maps korzystających z uwierzytelniania Microsoft Entra.
  • Uwierzytelnianie za pomocą klucza współdzielonego: Primary Key element i Secondary Key jest używany jako klucz subskrypcji do uwierzytelniania klucza współdzielonego. Uwierzytelnianie klucza współużytkowanego polega na przekazaniu klucza wygenerowanego przez konto usługi Azure Maps z każdym żądaniem do usługi Azure Maps. Zalecamy regularne ponowne generowanie kluczy. Aby zachować bieżące połączenia podczas rewitalizacji, dostępne są dwa klucze. Jeden klucz może być używany, a drugi jest ponownie wygenerowany. Po ponownym wygenerowaniu kluczy należy zaktualizować wszystkie aplikacje uzyskujące dostęp do tego konta pod kątem używania nowych kluczy. Aby uzyskać więcej informacji, zobacz Authentication with Azure Maps (Uwierzytelnianie za pomocą usługi Azure Maps)

Napiwek

Usługa Azure Maps może obsługiwać tokeny dostępu z poziomu przepływów logowania użytkownika lub interakcyjnych. Możesz użyć przepływów interaktywnych do bardziej ograniczonego zakresu odwołania dostępu i zarządzania wpisami tajnymi.

Tworzenie funkcji platformy Azure

Aby utworzyć zabezpieczoną aplikację usługi internetowej odpowiedzialną za uwierzytelnianie do identyfikatora Entra firmy Microsoft:

  1. Utwórz funkcję w witrynie Azure Portal. Aby uzyskać więcej informacji, zobacz Wprowadzenie do usługi Azure Functions.

  2. Skonfiguruj zasady MECHANIZMU CORS w funkcji platformy Azure, aby były dostępne dla jednostronicowej aplikacji internetowej. Zasady MECHANIZMU CORS zabezpieczają klientów przeglądarki przed dozwolonymi źródłami aplikacji internetowej. Aby uzyskać więcej informacji, zobacz Dodawanie funkcji obsługi mechanizmu CORS.

  3. Dodaj tożsamość przypisaną przez system w funkcji platformy Azure, aby umożliwić tworzenie jednostki usługi w celu uwierzytelnienia w usłudze Microsoft Entra ID.

  4. Udziel dostępu opartego na rolach dla tożsamości przypisanej przez system do konta usługi Azure Maps. Aby uzyskać więcej informacji, zobacz Udzielanie dostępu opartego na rolach.

  5. Napisz kod dla funkcji platformy Azure, aby uzyskać tokeny dostępu usługi Azure Maps przy użyciu tożsamości przypisanej przez system z jednym z obsługiwanych mechanizmów lub protokołu REST. Aby uzyskać więcej informacji, zobacz Uzyskiwanie tokenów dla zasobów platformy Azure.

    Oto przykładowy protokół REST:

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

    Oto przykładowa odpowiedź:

    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. Skonfiguruj zabezpieczenia funkcji platformy Azure HttpTrigger:

    1. Tworzenie klucza dostępu funkcji
    2. Zabezpieczanie punktu końcowego HTTP dla funkcji platformy Azure w środowisku produkcyjnym.
  7. Skonfiguruj aplikację internetową Azure Maps Web SDK.

    //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));
        });
    

Udzielanie użytkownikom dostępu opartego na rolach do usługi Azure Maps

Kontrolę dostępu opartą na rolach (RBAC) platformy Azure można przyznać, przypisując grupę firmy Microsoft Entra lub podmiot zabezpieczeń do co najmniej jednej definicji roli usługi Azure Maps.

Aby wyświetlić dostępne definicje ról platformy Azure dla usługi Azure Maps, zobacz Wyświetlanie wbudowanych definicji ról usługi Azure Maps.

Aby uzyskać szczegółowe instrukcje dotyczące przypisywania dostępnej roli usługi Azure Maps do utworzonej tożsamości zarządzanej lub jednostki usługi, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal

Aby efektywnie zarządzać aplikacją usługi Azure Maps i dostępem do zasobów dużej liczby użytkowników, zobacz Grupy firmy Microsoft Entra.

Ważne

Aby użytkownicy mogli uwierzytelniać się w aplikacji, należy najpierw utworzyć użytkowników w identyfikatorze Entra firmy Microsoft. Aby uzyskać więcej informacji, zobacz Dodawanie lub usuwanie użytkowników przy użyciu usługi Microsoft Entra ID.

Aby dowiedzieć się, jak skutecznie zarządzać dużym katalogiem dla użytkowników, zobacz Microsoft Entra ID.

Ostrzeżenie

Wbudowane definicje ról usługi Azure Maps zapewniają bardzo duży dostęp autoryzacji do wielu interfejsów API REST usługi Azure Maps. Aby ograniczyć dostęp interfejsów API do minimum, zobacz tworzenie niestandardowej definicji roli i przypisywanie tożsamości przypisanej przez system do niestandardowej definicji roli. Dzięki temu aplikacja może uzyskiwać dostęp do usługi Azure Maps z najniższymi uprawnieniami wymaganymi przez aplikację.

Następne kroki

Dalsze informacje na temat scenariusza aplikacji jednostronicowej:

Znajdź metryki użycia interfejsu API dla konta usługi Azure Maps:

Zapoznaj się z innymi przykładami, które pokazują, jak zintegrować identyfikator entra firmy Microsoft z usługą Azure Maps: