De API aanroepen in de voorbeeld-app Node.js daemon - Microsoft Entra (2023)

  • 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

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

  1. Log erop inMicrosoft Entra-beheercentrum.

  2. Als u toegang hebt tot meerdere tenants, zorg er dan voor dat u de map gebruikt die de Azure AD-tenant voor klanten bevat:

    1. Selecteer een pictogramMappen en abonnementenop de werkbalk.

    2. wportaalinstellingen | Directory en abonnementspagina, zou u de map Azure AD voor klanten in de lijst moeten vindenmappenavnen selecteerSchakel dan over.

  3. SelecteerAzure Active Directoryin het zijbalkmenu.

  4. SelecteerAppskies danApp-registraties.

  5. Selecteer+ Nieuwe registratie.

  6. ga naar de startpaginaRegistreer de applicatiedie de registratie-informatie van uw app weergeeft in:

    1. Voer in het gedeelte Naam een ​​beschrijvende naam in voor de app die wordt weergegeven aan b.v. gebruikers van de appCiam-ToDoList-api.

    2. onderOndersteunde accounttypenselecterenAlleen accounts in deze organisatiemap.

  7. SelecteerRegisterom een ​​applicatie te maken.

  8. 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:

  1. Selecteer naarApplicatie registratie paginade app die je hebt gemaakt (bijvCiam-ToDoList-api) naar de relevantebeoordelingspaginaopen.

  2. Kies hierondercontroleApplicatie rollen.

  3. SelecteerMaak een toepassingsrol.

    1. Voeg alstublieft toeGetoonde naamvoer b.v. een toepasselijke app-machtigingsnaamTakenlijst.Lees.Alles.

    2. biToegestane lidmaatschapstypenJij kiestappom andere apps toe te staan ​​deze toestemming te verlenen.

    3. biWaardezul jijTakenlijst, lezen, alles.

    4. biBeschrijvingzul jijToestaan ​​dat een app de takenlijst van een gebruiker leest met "TodoListApi".

    5. Selecteertoepassenom wijzigingen op te slaan.

  4. SelecteerMaak de toepassingsrol opnieuw:

    1. Voeg alstublieft toeGetoonde naamvoer b.v. een toepasselijke app-machtigingsnaamTakenlijst.Lees.Schrijf.Alles.

    2. biToegestane lidmaatschapstypenJij kiestappom andere apps toe te staan ​​deze toestemming te verlenen.

    3. Voeg alstublieft toeWaardeTakenlijst.Lezen.Opslaan.Alles.

    4. biBeschrijvingzul jijLaat de app de takenlijst van elke gebruiker lezen en schrijven met behulp van de "TodoListApi"-interface.

    5. Selecteertoepassenom wijzigingen op te slaan.

Configureer optionele vereisten

  1. Kies hierondercontrolezconfiguratie token.

  2. SelecteerVoeg een optionele vereiste toe.

  3. Selecteeroptioneel claimtypekies danToegang.

  4. Selecteer optioneelclaim-ID-type.

  5. 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:

  1. Log erop inMicrosoft Entra-beheercentrum.

  2. Als u toegang hebt tot meerdere tenants, zorg er dan voor dat u de map gebruikt die de Azure AD-tenant voor klanten bevat:

    1. Selecteer een pictogramMappen en abonnementenop de werkbalk.

    2. wportaalinstellingen | Directory en abonnementspagina, zou u de map Azure AD voor klanten in de lijst moeten vindenmappenavnen selecteerSchakel dan over.

  3. SelecteerAzure Active Directoryin het zijbalkmenu.

  4. SelecteerAppskies danApp-registraties.

  5. Selecteer+ Nieuwe registratie.

  6. doorgaanAanmelden applicatie paginadie de registratie-informatie van uw app weergeeft in:

    1. Voer de sectie inNaamvoer een beschrijvende naam in voor de applicatie die bijvoorbeeld wordt weergegeven aan applicatiegebruikersciam-clienttoepassing.

    2. onderOndersteunde accounttypenselecterenAlleen accounts in deze organisatiemap.

  7. SelecteerRegister.

  8. 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.

  1. Selecteer naarApplicatie registratie paginade app die je hebt gemaakt (bijvciam-clienttoepassing) rond de paginaOverzichtopen.

  2. Kies hierondercontrolemogelijkheidCertificaten en geheimen.

  3. SelecteerHet nieuwe klantengeheim.

  4. Voer in het vak inBeschrijvingVoer een beschrijving in van het klantgeheim (bijv.nu is de client-app geheim).

  5. Kies hieronderverlooptgeldigheidsperiode van de geheime sleutel (volgens het beveiligingsbeleid van uw organisatie) en selecteer vervolgensToevoegen.

  6. 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

  1. Selecteer naarApplicatie registratie paginade applicatie die u heeft gemaakt, b.vciam-clienttoepassing.

  2. Kies hierondercontrolemogelijkheidAPI-machtigingen.

  3. Kies hieronderGeconfigureerde machtigingenmogelijkheidToestemming toevoegen.

  4. Selecteer een tabbladMijn API's.

  5. Selecteer in de lijst met API's een API zoalsCiam-ToDoList-api.

  6. SelecteerApp-machtigingen. Deze optie kiezen we als de applicatie zelf inlogt en niet als gebruiker.

  7. SelecteerTakenlijst.Read.All, Takenlijst.Read.Write.Allin de lijst met machtigingen (gebruik indien nodig het zoekvak).

  8. Selecteer een knopMachtigingen toevoegen.

  9. 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:

    1. SelecteerGeef toestemming aan de beheerderkies danI.

    2. SelecteerUpdatedus kom terugAfgegeven voorhieronder 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

  1. Open een consolevenster en navigeer naar de map met de voorbeeldapp Node.js:

    cd 2-Autorisatie\3-call-api-node-daemon\App
  2. 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:

  1. openApplicatie\authConfig.jsvul mijn kode-editor.

  2. Zoek een tijdelijke aanduiding:

    • Voer_application_id_hier inen vervang deze door de applicatie-ID (client) van de eerder geregistreerde daemon-applicatie.

    • Voer_tenant_subdomein_hier inen vervang het door het Map (tenant) subdomein. Als het primaire domein van uw Tenant bijvoorbeeldcontoso.onmicrosoft.comje gebruiktcontoso. Als u geen tenantnaam heeft, leest u hier hoehuurdersinformatie lezen.

    • Voer_hier_het_klant_geheim_inen vervang het door het daemon-app-geheim dat u eerder hebt gekopieerd.

    • Indtast_the_Web_Api_Application_Id_hieren vervang deze door de web-API-toepassings-ID (client) die u eerder hebt gekopieerd.

App-registratie gebruiken in de voorbeeld-web-API:

  1. openAPI\To Do List API\appsettings.jsonvul mijn kode-editor.

  2. Zoek een tijdelijke aanduiding:

    • Voer_application_id_hier inen vervang deze door de toepassings-ID (de client-ID van de gekopieerde web-API).

    • Voer_tenant_id_hier inen vervang deze door de bibliotheek (tenant)-id die u eerder hebt gekopieerd.

    • Voer_tenant_subdomein_hier inen vervang het door het Map (tenant) subdomein. Als het primaire domein van uw Tenant bijvoorbeeldcontoso.onmicrosoft.comje gebruiktcontoso. Als u geen tenantnaam heeft, leest u hier hoehuurdersinformatie lezen.

Voer de voorbeeld-daemon-app en -API uit en test deze

  1. Open een consolevenster en voer de web-API uit met de volgende opdrachten:

    cd 2-autorisatie\3-call-api-node-daemon\API\ToDoListAPIdotnet run
  2. 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.

Top Articles
Latest Posts
Article information

Author: Patricia Veum II

Last Updated: 29/07/2023

Views: 6071

Rating: 4.3 / 5 (64 voted)

Reviews: 87% of readers found this page helpful

Author information

Name: Patricia Veum II

Birthday: 1994-12-16

Address: 2064 Little Summit, Goldieton, MS 97651-0862

Phone: +6873952696715

Job: Principal Officer

Hobby: Rafting, Cabaret, Candle making, Jigsaw puzzles, Inline skating, Magic, Graffiti

Introduction: My name is Patricia Veum II, I am a vast, combative, smiling, famous, inexpensive, zealous, sparkling person who loves writing and wants to share my knowledge and understanding with you.