- Artikel
In dit artikel wordt een voorbeeld van een Node.js-daemon-app gebruikt om te demonstreren hoe een daemon-app een token verkrijgt om een web-API aan te roepen. Azure Active Directory (Azure AD) voor klanten beschermt de web-API.
De daemon-toepassing haalt het token namens zichzelf op (niet namens de gebruiker). Gebruikers kunnen niet communiceren met de daemon-app omdat deze een eigen identiteit vereist. Dit type toepassing vraagt een toegangstoken aan met behulp van de toepassings-ID en presenteert de toepassings-ID, referenties (wachtwoord of certificaat) en de toepassings-ID-URI aan Azure AD.
De daemon-toepassing gebruiktstandaardtoewijzing van OAuth 2.0-clientreferenties. Het voorbeeld dat we in dit artikel gebruiken, gebruiktMicrosoft-verificatiebibliotheek voor knooppunt (MSAL-knooppunt) omvereenvoudig het proces van het verkrijgen van een token.
Claim
.NET 7.0of hoger.
Kod visuele studioof een andere code-editor.
Azure AD voor de Tenant van de klant. Als je nog geen abonnement hebt,u kunt zich aanmelden voor een gratis proefperiode.
Registreer de daemon-toepassing en web-API
In deze stap maakt u daemon- en web-API-registraties en specificeert u uw web-API-bereiken.
Registreer de web-API-toepassing
Log erop inMicrosoft Entra-beheercentrum.
Als u toegang hebt tot meerdere tenants, zorg er dan voor dat u de map gebruikt die de Azure AD-tenant voor klanten bevat:
Selecteer een pictogramMappen en abonnementenop de werkbalk.
wportaalinstellingen | Directory en abonnementspagina, zou u de map Azure AD voor klanten in de lijst moeten vindenmappenavnen selecteerSchakel dan over.
SelecteerAzure Active Directoryin het zijbalkmenu.
SelecteerAppskies danApp-registraties.
Selecteer+ Nieuwe registratie.
ga naar de startpaginaRegistreer de applicatiedie de registratie-informatie van uw app weergeeft in:
Voer in het gedeelte Naam een beschrijvende naam in voor de app die wordt weergegeven aan b.v. gebruikers van de appCiam-ToDoList-api.
onderOndersteunde accounttypenselecterenAlleen accounts in deze organisatiemap.
SelecteerRegisterom een applicatie te maken.
NaarOverzichtsvensterde toepassing wordt weergegeven nadat de registratie is voltooid. een aantekening makenkaart-ID (huurder)Iapplicatie-id (client)voor gebruik in de broncode van de applicatie.
Applicatierollen configureren
De API moet ten minste één applicatierol voor de applicatie publiceren, dwzApp-toestemmingzodat clienttoepassingen het toegangstoken zelf kunnen verkrijgen. Applicatiemachtigingen zijn het type machtigingen dat API's moeten afgeven om clienttoepassingen in staat te stellen zichzelf te verifiëren en niet te vereisen dat gebruikers inloggen. Volg deze stappen om app-machtigingen te publiceren:
Selecteer naarApplicatie registratie paginade app die je hebt gemaakt (bijvCiam-ToDoList-api) naar de relevantebeoordelingspaginaopen.
Kies hierondercontroleApplicatie rollen.
SelecteerMaak een toepassingsrol.
See AlsoTestosteron: uitleg, effect, productie en waarden en hoe te verhogen?Gebruikers aanmelden en API aanroepen in de web-app Node.js - Toegangstoken ophalen - Microsoft EntraVoeg alstublieft toeGetoonde naamvoer b.v. een toepasselijke app-machtigingsnaamTakenlijst.Lees.Alles.
biToegestane lidmaatschapstypenJij kiestappom andere apps toe te staan deze toestemming te verlenen.
biWaardezul jijTakenlijst, lezen, alles.
biBeschrijvingzul jijToestaan dat een app de takenlijst van een gebruiker leest met "TodoListApi".
Selecteertoepassenom wijzigingen op te slaan.
SelecteerMaak de toepassingsrol opnieuw:
Voeg alstublieft toeGetoonde naamvoer b.v. een toepasselijke app-machtigingsnaamTakenlijst.Lees.Schrijf.Alles.
biToegestane lidmaatschapstypenJij kiestappom andere apps toe te staan deze toestemming te verlenen.
Voeg alstublieft toeWaardeTakenlijst.Lezen.Opslaan.Alles.
biBeschrijvingzul jijLaat de app de takenlijst van elke gebruiker lezen en schrijven met behulp van de "TodoListApi"-interface.
Selecteertoepassenom wijzigingen op te slaan.
Configureer optionele vereisten
Kies hierondercontrolezconfiguratie token.
SelecteerVoeg een optionele vereiste toe.
Selecteeroptioneel claimtypekies danToegang.
Selecteer optioneelclaim-ID-type.
SelecteerToevoegenom wijzigingen op te slaan.
Registreer daemon-applicaties
Om ervoor te zorgen dat uw toepassing gebruikers met Microsoft Entra kan aanmelden, moet Azure Active Directory (Azure AD) voor klanten op de hoogte zijn van de toepassing die u maakt. Toepassingsregistratie brengt een vertrouwensrelatie tot stand tussen de toepassing en Microsoft Entra. Wanneer u uw toepassing registreert, genereert Azure AD een unieke ID, dwzapplicatie-id (custom-id)wordt genoemd, een waarde die wordt gebruikt om de applicatie te identificeren bij het verzenden van authenticatieverzoeken.
De volgende stappen laten zien hoe u uw applicatie registreert in het Microsoft Entra Admin Center:
Log erop inMicrosoft Entra-beheercentrum.
Als u toegang hebt tot meerdere tenants, zorg er dan voor dat u de map gebruikt die de Azure AD-tenant voor klanten bevat:
Selecteer een pictogramMappen en abonnementenop de werkbalk.
wportaalinstellingen | Directory en abonnementspagina, zou u de map Azure AD voor klanten in de lijst moeten vindenmappenavnen selecteerSchakel dan over.
SelecteerAzure Active Directoryin het zijbalkmenu.
SelecteerAppskies danApp-registraties.
Selecteer+ Nieuwe registratie.
doorgaanAanmelden applicatie paginadie de registratie-informatie van uw app weergeeft in:
Voer de sectie inNaamvoer een beschrijvende naam in voor de applicatie die bijvoorbeeld wordt weergegeven aan applicatiegebruikersciam-clienttoepassing.
onderOndersteunde accounttypenselecterenAlleen accounts in deze organisatiemap.
SelecteerRegister.
NaarOverzichtsvensterde toepassing wordt weergegeven nadat de registratie is voltooid. een aantekening makenkaart-ID (huurder)Iapplicatie-id (client)voor gebruik in de broncode van de applicatie.
Maak een klantgeheim
Maak vervolgens een clientgeheim voor de geregistreerde app. De toepassing gebruikt het clientgeheim om de identiteit te bewijzen bij het aanvragen van tokens.
Selecteer naarApplicatie registratie paginade app die je hebt gemaakt (bijvciam-clienttoepassing) rond de paginaOverzichtopen.
Kies hierondercontrolemogelijkheidCertificaten en geheimen.
SelecteerHet nieuwe klantengeheim.
Voer in het vak inBeschrijvingVoer een beschrijving in van het klantgeheim (bijv.
nu is de client-app geheim
).Kies hieronderverlooptgeldigheidsperiode van de geheime sleutel (volgens het beveiligingsbeleid van uw organisatie) en selecteer vervolgensToevoegen.
Notities makenWaardegeheim. U gebruikt deze waarde voor configuratie in een latere stap.
Opmerking
De geheime waarde wordt niet meer weergegeven en kan op geen enkele manier worden hersteld na het verwijderen van de pagina met certificaten en geheimen. Zorg er dus voor dat u de waarde vermeldt.
Voor een betere beveiliging kan datdenk aan certificatenin plaats van klantgeheimen.
Verleen API-machtigingen voor de daemon-app
Selecteer naarApplicatie registratie paginade applicatie die u heeft gemaakt, b.vciam-clienttoepassing.
Kies hierondercontrolemogelijkheidAPI-machtigingen.
Kies hieronderGeconfigureerde machtigingenmogelijkheidToestemming toevoegen.
Selecteer een tabbladMijn API's.
Selecteer in de lijst met API's een API zoalsCiam-ToDoList-api.
SelecteerApp-machtigingen. Deze optie kiezen we als de applicatie zelf inlogt en niet als gebruiker.
SelecteerTakenlijst.Read.All, Takenlijst.Read.Write.Allin de lijst met machtigingen (gebruik indien nodig het zoekvak).
Selecteer een knopMachtigingen toevoegen.
U hebt nu de rechten correct toegewezen. Aangezien de daemon-applicatie echter niet toestaat dat gebruikers ermee communiceren, kunnen gebruikers zelf niet instemmen met deze machtigingen. Verleen deze machtigingen als beheerder namens alle gebruikers in de tenant om dit probleem op te lossen:
SelecteerGeef toestemming aan de beheerder
kies danI. SelecteerUpdatedus kom terugAfgegeven voor
hieronder weergegevenToestandvoor beide vergunningen.
Kloon of download de voorbeeld-daemon-app en web-API
Voer een van de volgende handelingen uit om de voorbeeldwebapp-code op te halen:
.zip-bestand downloadenof kloon de voorbeeldweb-app vanuit GitHub door de volgende opdracht uit te voeren:
kloon git https://github.com/Azure-Samples/ms-identity-ciam-javascript-tutorial.git
Als jij kiest.zip pilsom te downloaden, extraheert u het voorbeeldtoepassingsbestand naar een map waar de totale lengte van het pad 260 tekens of minder is.
Installeer projectafhankelijkheden
Open een consolevenster en navigeer naar de map met de voorbeeldapp Node.js:
cd 2-Autorisatie\3-call-api-node-daemon\App
Voer de volgende opdrachten uit om de benodigde programma-afhankelijkheden te installeren:
npm installeren en npm bijwerken
Configureer de voorbeeld-daemon-toepassing en -API
App-registratie gebruiken in de voorbeeldclientweb-app:
open
Applicatie\authConfig.js
vul mijn kode-editor.Zoek een tijdelijke aanduiding:
Voer_application_id_hier in
en vervang deze door de applicatie-ID (client) van de eerder geregistreerde daemon-applicatie.Voer_tenant_subdomein_hier in
en vervang het door het Map (tenant) subdomein. Als het primaire domein van uw Tenant bijvoorbeeldcontoso.onmicrosoft.com
je gebruiktcontoso
. Als u geen tenantnaam heeft, leest u hier hoehuurdersinformatie lezen.Voer_hier_het_klant_geheim_in
en vervang het door het daemon-app-geheim dat u eerder hebt gekopieerd.Indtast_the_Web_Api_Application_Id_hier
en vervang deze door de web-API-toepassings-ID (client) die u eerder hebt gekopieerd.
App-registratie gebruiken in de voorbeeld-web-API:
open
API\To Do List API\appsettings.json
vul mijn kode-editor.Zoek een tijdelijke aanduiding:
Voer_application_id_hier in
en vervang deze door de toepassings-ID (de client-ID van de gekopieerde web-API).Voer_tenant_id_hier in
en vervang deze door de bibliotheek (tenant)-id die u eerder hebt gekopieerd.Voer_tenant_subdomein_hier in
en vervang het door het Map (tenant) subdomein. Als het primaire domein van uw Tenant bijvoorbeeldcontoso.onmicrosoft.com
je gebruiktcontoso
. Als u geen tenantnaam heeft, leest u hier hoehuurdersinformatie lezen.
Voer de voorbeeld-daemon-app en -API uit en test deze
Open een consolevenster en voer de web-API uit met de volgende opdrachten:
cd 2-autorisatie\3-call-api-node-daemon\API\ToDoListAPIdotnet run
Start de webtoepassingsclient met de volgende opdrachten:
2-Autorisatie\3-call-api-node-daemon\App-node . --op getToDos
Nadat u de daemon-toepassing en de web-API hebt uitgevoerd, ziet u iets dat lijkt op de volgende JSON-array in het consolevenster
{ id: 1, eigenaar: '3e8....-db63-43a2-a767-5d7db...', omschrijving: 'Afhalen bij kruidenier'},{ id: 2, eigenaar: 'c3cc....- c4ec -4531-a197-cb919ed.....", omschrijving: "Einde factuurrapport"},{ id: 3, eigenaar: "a35e….-3b8a-4632-8c4f-ffb840d.....", omschrijving : 'waterplanten'}
Uitleg
De Node.js-toepassing die u gebruiktOAuth 2.0 klantverklaringenom het toegangstoken voor uzelf te krijgen en niet voor de gebruiker. Het toegangstoken dat door de toepassing wordt aangevraagd, bevat de machtigingen die worden weergegeven als rollen. De clientgegevensstroom gebruikt deze machtigingenset in plaats van het gebruikersbereik voor toepassingstokens. Je hebtdeze machtigingen eerder met de app heeft gedeeldin de web-API igaf ze vervolgens aan de daemon-app.
Aan de kant van de API moet de web-API verifiëren dat het toegangstoken de benodigde machtigingen heeft (toepassingsmachtigingen). De web-API kan geen toegangstoken accepteren dat niet over de benodigde machtigingen beschikt.
Toegang tot gegevens
Het Web API-eindpunt moet zijn voorbereid om oproepen van zowel gebruikers als toepassingen te accepteren. Daarom moet het een manier hebben om op de juiste manier op elk verzoek te reageren. Als u bijvoorbeeld een gebruiker aanroept via gedelegeerde machtigingen/bereik, krijgt u een lijst met de taken van de gebruiker. Aan de andere kant kan een oproep vanuit een app via app-machtigingen/rollen een hele lijst met taken krijgen. Maar in dit artikel voeren we alleen een toepassingsaanroep uit, dus we hoeven geen gedelegeerde machtigingen/bereiken te configureren.
Volgende stap
Meer informatie oververkrijg een toegangstoken en roep de web-API aan in uw eigen Node.js-daemon-app.
Meer informatie overeen clientcertificaat gebruiken in plaats van een geheim om te authenticeren bij een gevoelige Node.js-toepassing.
Meer informatie oververgunningen en machtigingen.