Så här skyddar du ett ensideswebbprogram med icke-interaktiv inloggning
Skydda ett ensideswebbprogram med Microsoft Entra-ID, även om användaren inte kan logga in på Microsoft Entra-ID.
Skapa det här icke-interaktiva autentiseringsflödet genom att först skapa en säker Webbtjänst för Azure Function som ansvarar för att hämta åtkomsttoken från Microsoft Entra-ID. Den här webbtjänsten är endast tillgänglig för din ensideswebbapp.
Så här visar du autentiseringsinformation för ditt Azure Maps-konto i Azure-portalen:
Logga in på Azure-portalen.
Gå till Menyn i Azure-portalen. Välj Alla resurser och välj sedan ditt Azure Maps-konto.
Under Inställningar i den vänstra rutan väljer du Autentisering.
Tre värden skapas när Azure Maps-kontot skapas. De används för att stödja två typer av autentisering i Azure Maps:
- Microsoft Entra-autentisering:
Client ID
Representerar det konto som ska användas för REST API-begäranden. VärdetClient ID
ska lagras i programkonfigurationen och sedan ska det hämtas innan du gör AZURE Maps HTTP-begäranden som använder Microsoft Entra-autentisering. - Autentisering med delad nyckel: Och
Secondary Key
Primary Key
används som prenumerationsnyckel för autentisering med delad nyckel. Autentisering med delad nyckel förlitar sig på att skicka nyckeln som genereras av Azure Maps-kontot med varje begäran till Azure Maps. Vi rekommenderar att du regelbundet återskapar dina nycklar. För att underhålla aktuella anslutningar under regenereringen tillhandahålls två nycklar. En nyckel kan användas samtidigt som den andra återskapas. När du återskapar nycklarna måste du uppdatera alla program som använder det här kontot till att använda de nya nycklarna. Mer information finns i Autentisering med Azure Maps
Dricks
Azure Maps har stöd för åtkomsttoken från användarinloggning eller interaktiva flöden. Du kan använda interaktiva flöden för ett mer begränsat omfång för återkallande av åtkomst och hemlig hantering.
Skapa en Azure-funktion
Så här skapar du ett skyddat webbtjänstprogram som ansvarar för autentisering till Microsoft Entra-ID:
Skapa en funktion i Azure-portalen. Mer information finns i Komma igång med Azure Functions.
Konfigurera CORS-principen på Azure-funktionen så att den är tillgänglig för ensideswebbappen. CORS-principen skyddar webbläsarklienter till det tillåtna ursprunget för ditt webbprogram. Mer information finns i Lägga till CORS-funktioner.
Lägg till en systemtilldelad identitet i Azure-funktionen för att göra det möjligt att skapa ett tjänsthuvudnamn för att autentisera till Microsoft Entra-ID.
Bevilja rollbaserad åtkomst för den systemtilldelade identiteten till Azure Maps-kontot. Mer information finns i Bevilja rollbaserad åtkomst.
Skriv kod för Azure-funktionen för att hämta Azure Maps-åtkomsttoken med hjälp av systemtilldelad identitet med någon av de mekanismer som stöds eller REST-protokollet. Mer information finns i Hämta token för Azure-resurser.
Här är ett exempel på ETT REST-protokoll:
GET /MSI/token?resource=https://atlas.microsoft.com/&api-version=2019-08-01 HTTP/1.1 Host: localhost:4141
Och här är ett exempel på svar:
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": "..." }
Konfigurera säkerhet för Azure-funktionen HttpTrigger:
- Skapa en funktionsåtkomstnyckel
- Säker HTTP-slutpunkt för Azure-funktionen i produktion.
Konfigurera ett webbprogram 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)); });
Bevilja rollbaserad åtkomst för användare till Azure Maps
Du kan bevilja rollbaserad åtkomstkontroll i Azure (Azure RBAC) genom att tilldela en Microsoft Entra-grupp eller säkerhetsobjekt till en eller flera Rolldefinitioner för Azure Maps.
Information om hur du visar tillgängliga Azure-rolldefinitioner för Azure Maps finns i Visa inbyggda rolldefinitioner för Azure Maps.
Detaljerade steg om hur du tilldelar en tillgänglig Azure Maps-roll till den skapade hanterade identiteten eller tjänstens huvudnamn finns i Tilldela Azure-roller med hjälp av Azure-portalen
Information om hur du effektivt hanterar Azure Maps-appen och resursåtkomsten för en stor mängd användare finns i Microsoft Entra-grupper.
Viktigt!
För att användare ska kunna autentisera till ett program måste användarna först skapas i Microsoft Entra-ID. Mer information finns i Lägga till eller ta bort användare med hjälp av Microsoft Entra ID.
Mer information om hur du effektivt hanterar en stor katalog för användare finns i Microsoft Entra-ID.
Varning
Inbyggda rolldefinitioner i Azure Maps ger en mycket stor auktoriseringsåtkomst till många REST-API:er för Azure Maps. Information om hur du begränsar API:ernas åtkomst till ett minimum finns i Skapa en anpassad rolldefinition och tilldela den systemtilldelade identiteten till definitionen för anpassad roll. Detta ger den minsta behörighet som krävs för att programmet ska få åtkomst till Azure Maps.
Nästa steg
Ytterligare förståelse för ett enkelsidigt programscenario:
Hitta API-användningsstatistiken för ditt Azure Maps-konto:
Utforska andra exempel som visar hur du integrerar Microsoft Entra-ID med Azure Maps: