Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Gäller för:  Externa klienter (läs mer)
 Externa klienter (läs mer)
I den här snabbstarten får du lära dig hur du loggar in användare och anropar ett webb-API från ett Node.js webbprogram i din externa klientorganisation. Exempelprogrammet anropar ett .NET-API. Exempelwebbprogrammet använder Microsoft Authentication Library (MSAL) för Node för att hantera autentisering.
Förutsättningar
- Slutför stegen och förutsättningarna i Snabbstart: Logga in användare i exempelwebbapp i artikel. Den här artikeln visar hur du loggar in användare med hjälp av ett exempel Node.js webbapp.
- En extern hyresgäst. Om du vill skapa en väljer du mellan följande metoder: - (Rekommenderas) Använd tillägget Microsoft Entra External ID för att konfigurera en extern klientorganisation direkt i Visual Studio Code.
- Skapa en ny extern hyresgäst i administrationscenter för Microsoft Entra.
 
- Registrera en ny app för webb-API:et i administrationscentret för Microsoft Entra, som endast har konfigurerats för konton i den här organisationskatalogen. Mer information finns i Registrera ett program . Registrera följande värden från programöversiktssidan för senare användning: - App-ID (klient-ID)
- Katalog-ID (hyresgäst)
 
- Visual Studio Code eller någon annan kodredigerare.
- Node.js.
- .NET 7.0 eller senare.
Konfigurera API-omfång och roller
Genom att registrera webb-API:et måste du konfigurera API-omfång för att definiera de behörigheter som ett klientprogram kan begära för att få åtkomst till webb-API:et. Dessutom måste du konfigurera approller för att ange vilka roller som är tillgängliga för användare eller program och ge webbappen nödvändiga API-behörigheter så att den kan anropa webb-API:et.
Konfigurera API-omfång
Ett API måste publicera minst ett omfång, även kallat delegerad behörighet, för att klientapparna framgångsrikt ska kunna få en åtkomsttoken för en användare. Följ dessa steg för att publicera omfattningen:
- På sidan Appregistreringar väljer du den API-applikation som du skapade (ciam-ToDoList-api) för att öppna dess Översikt-sida. 
- Gå till Hanteraoch välj Exponera ett API. 
- Längst upp på sidan väljer du länken Lägg till bredvid program-ID-URIför att generera en URI som är unik för den här appen. 
- Acceptera den föreslagna program-ID-URI:n, till exempel - api://{clientId}, och välj Spara. När ditt webbprogram begär en åtkomsttoken för webb-API:et läggs URI:n till som prefix för varje omfång som du definierar för API:et.
- Under Omfång som definierats av det här API:etväljer du Lägg till ett omfång. 
- Ange följande värden som definierar läsbehörighet till API:et och välj sedan Lägg till omfång för att spara ändringarna: - Egenskap - Värde - Omfångsnamn - ToDoList.Read - Vem kan samtycka - endast administratörer - Visningsnamn för administratörens medgivande - Läsa användarnas ToDo-lista med hjälp av "TodoListApi" - Beskrivning av administratörsmedgivande - Tillåt att appen läser användarens ToDo-lista med hjälp av "TodoListApi". - Stat - aktiverat 
- Välj Lägg till ett omfång igen och ange följande värden som definierar ett läs- och skrivåtkomstomfång till API:et. Välj Lägg till omfång för att spara ändringarna: - Egenskap - Värde - Omfångsnamn - ToDoList.ReadWrite - Vem kan samtycka - endast administratörer - Visningsnamn för administratörens medgivande - Läsa och skriva användares ToDo-lista med hjälp av "ToDoListApi" - Beskrivning av administratörsmedgivande - Tillåt att appen läser och skriver användarens ToDo-lista med hjälp av "ToDoListApi" - Stat - aktiverat 
Läs mer om principen om lägsta behörighet när du publicerar behörigheter för ett webb-API.
Konfigurera app roller
Ett API måste publicera minst en apputvecklarroll för applikationer, även kallat Programbehörighet, för att klientapparna ska få en åtkomsttoken i sin egen rätt. Programbehörigheter är den typ av behörigheter som API:er bör publicera när de vill att klientprogram ska kunna autentiseras som sig själva och inte behöver logga in användare. För att publicera en appbehörighet, följ dessa steg:
- På sidan Appregistreringar väljer du det program som du skapade (till exempel ciam-ToDoList-api) för att öppna sidan Översikt. 
- Under Hanteraväljer du App-roller. 
- Välj Skapa approlloch ange sedan följande värden och välj sedan Använd för att spara ändringarna: - Egenskap - Värde - Visningsnamn - ToDoList.Read.All - Tillåtna medlemstyper - Applikationer - Värde - ToDoList.Read.All - Beskrivning - Tillåt att appen läser alla användares ToDo-lista med hjälp av "TodoListApi" - Vill du aktivera den här rollen för appen? - Håll den markerad 
- Välj Skapa approll igen och ange sedan följande värden för den andra approllen och välj sedan Använd för att spara ändringarna: - Egenskap - Värde - Visningsnamn - ToDoList.ReadWrite.All - Tillåtna medlemstyper - Applikationer - Värde - ToDoList.ReadWrite.All - Beskrivning - Tillåt att appen läser och skriver alla användares ToDo-lista med hjälp av "ToDoListApi" - Vill du aktivera den här rollen för appen? - Håll den markerad 
Konfigurera valfria anspråk
Du kan lägga till det valfria anspråket idtyp för att hjälpa webb-API:et att avgöra huruvida en token är en app token eller en app + användare token. Även om du kan använda en kombination av scp-- och -roller anspråk för samma ändamål, är det enklaste sättet att skilja en apptoken och en app + användartoken åt med hjälp av idtyp anspråk. Värdet för det här anspråket är till exempel app när en token är en endast app-token.
Använd stegen i artikeln Konfigurera valfria anspråk för att lägga till anspråket idtyp till åtkomsttoken:
- Välj för tokentypenAccess.
- I listan med valfria anspråk väljer du idtyp.
Bevilja API-behörigheter till webbappen
Om du vill ge din klientapp (API-behörigheter för ciam-client-app) följer du dessa steg:
- På sidan Appregistreringar väljer du det program som du skapade (till exempel ciam-client-app) för att öppna sidan Översikt. 
- Under Hanteraväljer du API-behörigheter. 
- Under Konfigurerade behörigheterväljer du Lägg till en behörighet. 
- Välj API:er som min organisation använder fliken. 
- I listan över API:er väljer du API:et, till exempel ciam-ToDoList-api. 
- Välj alternativet Delegerade behörigheter. 
- I behörighetslistan väljer du ToDoList.Read, ToDoList.ReadWrite (använd sökrutan om det behövs). 
- Välj knappen Lägg till behörigheter. Nu har du tilldelat behörigheterna korrekt. Men eftersom hyresgästen är en kunds hyresgäst kan konsumentanvändarna själva inte samtycka till dessa behörigheter. För att lösa det här problemet måste du som administratör samtycka till dessa behörigheter för alla användare i klientorganisationen: - Välj Bevilja administratörsmedgivande för <ditt klientnamn>och välj sedan Ja. 
- Välj Uppdatera och kontrollera sedan att Godkänt för <ditt klientnamn> visas under Status för båda omfången. 
 
- I listan Konfigurerade behörigheter väljer du behörigheterna ToDoList.Read och ToDoList.ReadWrite, en i taget, och kopierar sedan behörighetens fullständiga URI för senare användning. Den fullständiga behörighets-URI:n ser ut ungefär som - api://{clientId}/{ToDoList.Read}eller- api://{clientId}/{ToDoList.ReadWrite}.
Klona eller ladda ned exempelwebbprogram och webb-API
Om du vill hämta exempelprogrammet kan du antingen klona det från GitHub eller ladda ned det som en .zip fil.
- Om du vill klona exemplet öppnar du en kommandotolk och navigerar till den platsen där du vill skapa projektet och anger följande kommando: - git clone https://github.com/Azure-Samples/ms-identity-ciam-javascript-tutorial.git
- Ladda ned filen .zip. Extrahera den till en filsökväg där namnets längd är mindre än 260 tecken. 
Installera projektets beroenden
- Öppna ett konsolfönster och ändra till katalogen som innehåller Node.js/Express-exempelappen: - cd 2-Authorization\4-call-api-express\App
- Kör följande kommandon för att installera beroenden för webbappar: - npm install && npm update
Konfigurera exempelwebbappen och API:et
Så här använder du din appregistrering i klientwebbappexemplet:
- Öppna - App\authConfig.jsfil i kodredigeraren.
- Hitta platshållaren: - 
              Enter_the_Application_Id_Hereoch ersätt det med program-ID:t (klient) för klientappen som du registrerade tidigare. Klientappen är en som du har registrerat i förhandskraven.
- 
              Enter_the_Tenant_Subdomain_Hereoch ersätt det med underdomänen Directory (tenant). Om din primära klientdomän till exempel ärcontoso.onmicrosoft.comanvänder ducontoso. Om du inte har ditt klientnamn, lär dig hur du kan läsa dina klientuppgifter.
- 
              Enter_the_Client_Secret_Hereoch ersätt det med det apphemlighetsvärde som du kopierade tidigare.
- 
              Enter_the_Web_Api_Application_Id_Hereoch ersätt det med program-ID:t (klient) för webb-API:et som du kopierade tidigare som en del av förhandskraven.
 
- 
              
Så här använder du din appregistrering i webb-API-exemplet:
- Öppna - API\ToDoListAPI\appsettings.jsonfil i kodredigeraren.
- Hitta platshållaren: - 
              Enter_the_Application_Id_Hereoch ersätt det med program-ID:t (klient) för webb-API:et som du kopierade. Webb-API-appen är en som du registrerade tidigare som del av förkraven.
- 
              Enter_the_Tenant_Id_Hereoch ersätt det med katalog-ID:t (hyresgäst) som du kopierade tidigare.
- 
              Enter_the_Tenant_Subdomain_Hereoch ersätt det med underdomänen Directory (tenant). Om din primära klientdomän till exempel ärcontoso.onmicrosoft.comanvänder ducontoso. Om du inte har ditt klientnamn, lär dig hur du kan läsa dina klientuppgifter.
 
- 
              
Köra och testa exempelwebbapp och API
- Öppna ett konsolfönster och kör sedan webb-API:et med hjälp av följande kommandon: - cd 2-Authorization\4-call-api-express\API\ToDoListAPI dotnet run
- Kör webbappsklienten med hjälp av följande kommandon: - cd 2-Authorization\4-call-api-express\App npm install npm start
- Öppna webbläsaren och gå sedan till http://localhost:3000. 
- Välj knappen Logga in. Du uppmanas att logga in.   
- På inloggningssidan skriver du din e-postadress, väljer Nästa, skriver Lösenordoch väljer sedan Logga in. Om du inte har något konto väljer du Inget konto? Skapa en länk som startar registreringsflödet. 
- Om du väljer registreringsalternativet slutför du hela registreringsflödet när du har fyllt i din e-post, engångslösenord, nya lösenord och mer kontoinformation. Du ser en sida som liknar följande skärmbild. Du ser en liknande sida om du väljer inloggningsalternativet.   
API-anrop
- Om du vill anropa API:et väljer du länken Visa din todolist-. Du ser en sida som liknar följande skärmbild.   
- Ändra listan över to-do genom att skapa och ta bort objekt. 
Så här fungerar det
Du utlöser ett API-anrop varje gång du visar, lägger till eller tar bort en uppgift. Varje gång du utlöser ett API-anrop hämtar klientwebbappen en åtkomsttoken med nödvändiga behörigheter (omfång) för att anropa en API-slutpunkt. Om du till exempel vill läsa en uppgift måste klientwebbappen hämta en åtkomsttoken med ToDoList.Read behörighet/omfång.
Webb-API-slutpunkten måste kontrollera om behörigheterna eller omfången i åtkomsttoken, som tillhandahålls av klientappen, är giltiga. Om åtkomsttoken är giltig svarar slutpunkten på HTTP-begäran, annars svarar den med ett 401 Unauthorized HTTP-fel.