- Artikel
In diesem Artikel wird anhand einer Beispiel-Node.js-Daemon-Anwendung gezeigt, wie eine Daemon-Anwendung ein Token zum Aufrufen einer Web-API erhält. Die Web-API ist für Kunden mit Azure Active Directory (Azure AD) gesichert.
Eine Daemon-Anwendung ruft ein Token in ihrem eigenen Namen auf (nicht im Namen eines Benutzers). Benutzer können nicht mit einer Daemon-Anwendung interagieren, da die Daemon-Anwendung eine eigene Identität erfordert. Dieser Anwendungstyp fordert ein Zugriffstoken basierend auf seiner Anwendungsidentität an und stellt Azure AD seine Anwendungs-ID, Anmeldeinformationen (Passwort oder Zertifikat) und den Anwendungs-ID-URI zur Verfügung.
Eine Daemon-Anwendung verwendet dieStandardzuordnung zu OAuth 2.0-Client-Anmeldeinformationen. Um den Token-Erwerbsprozess zu vereinfachen, verwendet das in diesem Artikel verwendete Beispiel dasMicrosoft-Authentifizierungsbibliothek für Knoten (MSAL-Knoten).
Anforderungen
.NET7.0oder höher.
Visual Studio-Codeoder ein anderer Code-Editor
Azure AD für Kunden-Mandant. Falls Sie es noch nicht getan haben,Registrieren Sie sich für eine kostenlose Testversion.
Registrieren einer Daemon-Anwendung und einer Web-API
In diesem Schritt erstellen Sie die Web-API-Anwendungs- und Daemon-Registrierungen und geben die Bereiche Ihrer Web-API an.
Registrieren Sie eine Web-API-Anwendung
etwas abonnierenMicrosoft Login Admin Centereins.
Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie unbedingt das Verzeichnis, das Ihren Azure AD-Mandanten für Kunden enthält:
Wählen Sie das Symbol in der Symbolleiste ausVerzeichnisse und Abonnementsaußerhalb.
zur Seite schauenPortaleinstellungen > Verzeichnisse und AbonnementsIhr AzureAD-Verzeichnis für Kunden in der Liste vonVerzeichnisnamenund dann auswählenAustauschaußerhalb.
Wählen Sie aus dem SeitenleistenmenüAzure Active Directoryaußerhalb.
Bitte treffen Sie eine WahlFormenund dannApp-Protokolleaußerhalb.
Bitte treffen Sie eine Wahl+ Neuer Rekordaußerhalb.
Geben Sie auf der resultierenden Seite einAntrag registrierenDie Registrierungsinformationen Ihrer Bewerbung:
Geben Sie im Abschnitt „Name“ einen beschreibenden App-Namen ein, der Benutzern der App angezeigt werden soll (z. Bciam-client-app).
Wählen Sie unten ausUnterstützte KontotypenDie OptionNur Konten in diesem Organisationsverzeichnisaußerhalb.
Bitte treffen Sie eine WahlRegistratorum die App zu erstellen.
zum BereichÜberblickSobald die Registrierung abgeschlossen ist, wird die Seite der Anwendung angezeigt. schreibe das aufVerzeichnis-ID (Mandant)es ist beiAnwendungs-ID (Client)zur Verwendung im Quellcode Ihrer Anwendung.
App-Rollen konfigurieren
Eine API muss mindestens eine Anwendungsfunktion für Anwendungen veröffentlichen, auch bekannt alsApp-Berechtigungaufgerufen, damit Clientanwendungen ein Zugriffstoken als sie selbst abrufen können. Anwendungsanmeldeinformationen sind die Art von Anmeldeinformationen, die APIs offenlegen müssen, wenn sie möchten, dass sich Clientanwendungen als sie selbst authentifizieren und Benutzer sich nicht anmelden müssen. Führen Sie die folgenden Schritte aus, um eine Antragsberechtigung zu veröffentlichen:
Wählen Sie danebenApp-Protokolledie von Ihnen erstellte Anwendung (z. B.ciam-ToDoList-api) auf ihre SeiteÜberblickOffen.
Wählen Sie unten ausAdministratorDie OptionAnwendungsfunktionenaußerhalb.
Bitte treffen Sie eine WahlApp-Rolle erstellenaußerhalb.
See AlsoIntel HPC Updates for ISC 2023: Aurora Almost Complete, More Falcon Shores and the Future of XPUsNode JS Windows - Comment installer ou mettre à jour Node ?Node.jsを最新バージョンにアップデートする方法【更新】[ハウツー] Node.js ioBroker を適切に更新する方法 - 2021/22 版SendenAnzeigenameGeben Sie beispielsweise einen passenden Namen für Ihre Bewerbungsberechtigung einAufgabenliste.Alles lesen.
Wählen Sie unten ausZulässige MitgliedstypenDie OptionAnwendungaus, um sicherzustellen, dass andere Apps diese Berechtigung erhalten können.
Geben Sie ein, wieWertToDoList.Read.AllA.
SendenBeschreibungErmöglichen Sie der App, die To-Do-Liste jedes Benutzers mithilfe der TodoListApi zu lesenA.
Bitte treffen Sie eine WahlAnnehmenum die Änderungen zu speichern.
noch einmal wählenApp-Rolle erstellenaußerhalb:
SendenAnzeigenameGeben Sie beispielsweise einen passenden Namen für Ihre Bewerbungsberechtigung einAufgabenliste.ReadWrite.Everything.
Wählen Sie unten ausZulässige MitgliedstypenDie OptionAnwendungaus, um sicherzustellen, dass andere Apps diese Berechtigung erhalten können.
Geben Sie ein alsWertToDoList.ReadWrite.AllA.
SendenBeschreibungErmöglichen Sie der App, die Aufgabenliste jedes Benutzers mithilfe von TodoListApi zu lesen und zu schreibenA.
Bitte treffen Sie eine WahlAnnehmenum die Änderungen zu speichern.
Konfigurieren Sie optionale Deklarationen
Wählen Sie unten ausAdministratorsterbenTokenkonfigurationaußerhalb.
Bitte treffen Sie eine Wahloptionalen Anspruch hinzufügenaußerhalb.
Wählen Sie die Optionoptionaler Anspruchstypund dannZugangaußerhalb.
Wählen Sie optionalen Anspruchidtypaußerhalb.
reinklickenergänzenum die Änderungen zu speichern.
Registrieren Sie die Daemon-Anwendung
Damit Ihre Anwendung Benutzer bei Microsoft Entra registrieren kann, müssen Azure Active Directory (Azure AD)-Kunden die von Ihnen erstellte Anwendung kennen. Durch die Anwendungsregistrierung wird eine Vertrauensbeziehung zwischen der Anwendung und Microsoft Entra hergestellt. Wenn Sie eine Anwendung registrieren, generiert Azure AD eine eindeutige KennungAnwendungs-ID (Kunden-ID). Dieser Wert wird zur Identifizierung Ihrer Anwendung bei Authentifizierungsanfragen verwendet.
Die folgenden Schritte veranschaulichen, wie Sie Ihre App im Microsoft Entra Admin Center registrieren:
etwas abonnierenMicrosoft Login Admin Centereins.
Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie unbedingt das Verzeichnis, das Ihr Azure AD für Kundenmandanten enthält:
Wählen Sie das Symbol in der Symbolleiste ausVerzeichnisse und Abonnementsaußerhalb.
zur Seite schauenPortaleinstellungen > Verzeichnisse und AbonnementsIhr AzureAD-Verzeichnis für Kunden in der Liste vonVerzeichnisnamenund dann auswählenAustauschaußerhalb.
Wählen Sie aus dem SeitenleistenmenüAzure Active Directoryaußerhalb.
Bitte treffen Sie eine WahlFormenund dannApp-Protokolleaußerhalb.
Bitte treffen Sie eine Wahl+ Neuer Rekordaußerhalb.
Geben Sie auf der resultierenden Seite einAntrag registrierenDie Registrierungsinformationen Ihrer Bewerbung:
Betreten Sie den AbschnittNameGeben Sie einen beschreibenden App-Namen ein, den Benutzer der App sehen sollen (z. Bciam-client-app).
Wählen Sie unten ausUnterstützte KontotypenDie OptionNur Konten in diesem Organisationsverzeichnisaußerhalb.
Bitte treffen Sie eine WahlRegistrator.
ÖÜbersichtspanelSobald die Registrierung abgeschlossen ist, wird die Seite der Anwendung angezeigt. schreibe das aufVerzeichnis-ID (Mandant)es ist beiAnwendungs-ID (Client)zur Verwendung im Quellcode Ihrer Anwendung.
Erstellen eines Client-Geheimnisses
Erstellen Sie einen geheimen Clientschlüssel für die registrierte Anwendung. Die App verwendet das Client-Geheimnis als Identitätsnachweis beim Anfordern von Token.
Wählen Sie danebenApp-Protokolledie von Ihnen erstellte Anwendung (z. B.ciam-client-app) auf ihre SeiteÜberblickOffen.
Wählen Sie unten ausAdministratorDie OptionZertifikate und Geheimnisseaußerhalb.
Bitte treffen Sie eine Wahlneues Kundengeheimnis.
Geben Sie in das Feld einBeschreibungGeben Sie eine Beschreibung für das Client-Geheimnis ein (z. B.
Jetzt ist die Clientanwendung geheim
).Wählen Sie unten ausVerfallsdatumeine Gültigkeitsdauer für den geheimen Schlüssel (gemäß den Sicherheitsregeln Ihrer Organisation) und dannergänzenaußerhalb.
Beobachten Sie dasWertdes Geheimnisses. Dieser Wert wird in einem späteren Schritt zur Konfiguration verwendet.
Wahrnehmen
Der Geheimwert wird nicht mehr angezeigt oder anderweitig abgerufen, nachdem Sie die Seite „Zertifikate und Geheimnisse“ verlassen. Also schreib es auf.
Um die Sicherheit zu verbessern, sollten SieZertifikateanstelle von Client-Geheimnissen verwenden.
Erteilen von API-Berechtigungen für die Daemon-Anwendung
Wählen Sie danebenApp-Protokolledie von Ihnen erstellte Anwendung (z. B.ciam-client-app) außerhalb.
Wählen Sie unten ausAdministratorDie OptionAPI-Berechtigungen.
Wählen Sie unten auskonfigurierte BerechtigungenDie OptionBerechtigung hinzufügenaußerhalb.
Tab auswählenMeine APIsaußerhalb.
Wählen Sie in der Liste der APIs beispielsweise die API ausciam-ToDoList-api.
Wählen Sie die OptionApp-Berechtigungenaußerhalb. Wir haben diese Option ausgewählt, weil sich die Anwendung als sie selbst anmeldet, nicht als Benutzer.
Wählen Sie aus der Whitelist ausTodoList.Read.All, ToDoList.ReadWrite.All(verwenden Sie ggf. das Suchfeld).
Wählen Sie die SchaltflächeBerechtigungen hinzufügenaußerhalb.
Zu diesem Zeitpunkt haben Sie die Berechtigungen korrekt zugewiesen. Da die Daemon-Anwendung jedoch keine Interaktion mit Benutzern zulässt, können die Benutzer selbst diesen Berechtigungen nicht zustimmen. Um dieses Problem zu beheben, müssen Sie als Administrator im Namen aller Mandantenbenutzer diesen Berechtigungen zustimmen:
Bitte treffen Sie eine WahlErteilen Sie die Zustimmung des Administrators
und dannEaußerhalb. Bitte treffen Sie eine WahlAktualisierenund stellen Sie sicher, dass beide Berechtigungen habenStatusder Staatgewährt
wird gezeigt.
Klonen Sie eine Beispiel-Daemon-App und eine Web-API oder laden Sie sie herunter
Um den Beispiel-Webanwendungscode zu erhalten, können Sie wie folgt vorgehen:
Laden Sie die ZIP-Datei herunterOder klonen Sie die Beispiel-Webanwendung von GitHub, indem Sie den folgenden Befehl ausführen:
Git-Klon https://github.com/Azure-Samples/ms-identity-ciam-javascript-tutorial.git
wenn du stirbst.ReißverschlussExtrahieren Sie die Beispielanwendungsdatei in einen Ordner, dessen Gesamtpfadlänge 260 Zeichen oder weniger beträgt.
Projektabhängigkeiten installieren
Öffnen Sie ein Konsolenfenster und wechseln Sie in das Verzeichnis mit der Node.js-Beispielanwendung:
cd 2-Authorization\3-call-api-node-daemon\App
Führen Sie die folgenden Befehle aus, um Anwendungsabhängigkeiten zu installieren:
npm install && npm update
Konfigurieren Sie die Daemon-Beispielanwendung und API
So verwenden Sie die App-Registrierung in der Beispiel-Client-Web-App:
öffne das
App\authConfig.js
Datei in Ihrem Code-Editor.Suchen Sie den folgenden Platzhalter:
Enter_the_Application_Id_Hier
, und ersetzen Sie es durch die Anwendungs-ID (Client-ID) der Daemon-Anwendung, die Sie zuvor registriert haben.Enter_the_Tenant_Subdomain_Hier
und ersetzt es durch die Unterdomäne des Verzeichnisses (den Mandanten). Wenn Ihre primäre Mandantendomäne beispielsweise istcontoso.onmicrosoft.com
aber socontoso
. Wenn Sie den Namen Ihres Mieters nicht kennen, können Sie dies tunLesen Sie Ihre Kundendaten.Enter_the_Client_Secret_Here
und ersetzen Sie ihn durch den App-Geheimniswert, den Sie zuvor kopiert haben.Enter_the_Web_Api_Application_Id_Here
und ersetzen Sie es durch die Anwendungs-ID (Client-ID) der Anwendung, die Sie zuvor registriert haben.
So verwenden Sie die Anwendungsregistrierung im Web-API-Beispiel:
öffne das
API\ToDoListAPI\appsettings.json
Datei in Ihrem Code-Editor.Suchen Sie den folgenden Platzhalter:
Enter_the_Application_Id_Hier
und ersetzen Sie sie durch die Anwendungs-ID (Client-ID) der von Ihnen kopierten Web-API.Enter_the_Tenant_Id_Here
und ersetzen Sie es durch die Verzeichnis-ID (Mandanten-ID), die Sie zuvor kopiert haben.Enter_the_Tenant_Subdomain_Hier
und ersetzt es durch die Unterdomäne des Verzeichnisses (den Mandanten). Wenn Ihre primäre Mandantendomäne beispielsweise istcontoso.onmicrosoft.com
aber socontoso
. Wenn Sie den Namen Ihres Mieters nicht kennen, können Sie dies tunLesen Sie Ihre Kundendaten.
Ausführen und Testen der Daemon-Beispielanwendung und -API
Öffnen Sie ein Konsolenfenster und führen Sie die Web-API mit den folgenden Befehlen aus:
cd 2-Authorization\3-call-api-node-daemon\API\ToDoListAPIdotnet ausführen
Führen Sie den Web-App-Client mit den folgenden Befehlen aus:
2-Authorization\3-call-api-node-daemon\App node . --op getToDos
Wenn die Daemon-App und die Web-API erfolgreich ausgeführt werden, sollten Sie im Konsolenfenster etwas Ähnliches wie das folgende JSON-Array sehen
{ id: 1, Besitzer: '3e8....-db63-43a2-a767-5d7db...', Beschreibung: 'Lebensmittel besorgen'},{ id: 2, Besitzer: 'c3cc....-c4ec - 4531-a197-cb919ed.....', Beschreibung: 'Vollständiger Rechnungsbericht'},{ id: 3, Eigentümer: 'a35e....-3b8a-4632-8c4f-ffb840d.....', Beschreibung : 'Wasserpflanzen'}
Funktionalität
Die Node.js-App verwendet dieOAuth 2.0-Zuordnung zu Client-Anmeldeinformationenum ein Zugriffstoken für sich selbst und nicht für den Benutzer zu erhalten. Das von der App angeforderte Zugriffstoken enthält die Berechtigungen, dargestellt als Rollen. Der Client-Anmeldeinformationsfluss verwendet diesen Satz von Berechtigungen anstelle von Benutzerbereichen für Anwendungstokens. Zuvor hatten Sie eine Web-APIhat diese App-Berechtigungen verfügbar gemachtedann dem Anwendungsdämon gewährt.
Auf der API-Seite muss die Web-API prüfen, ob das Zugriffstoken über die erforderlichen Berechtigungen (Anwendungsberechtigungen) verfügt. Die Web-API kann kein Zugriffstoken akzeptieren, das nicht über die erforderlichen Berechtigungen verfügt.
Datenzugriff
Ein Web-API-Endpunkt muss bereit sein, Aufrufe von Benutzern und Anwendungen anzunehmen. Daher muss es eine Möglichkeit geben, auf jede Anfrage angemessen zu reagieren. Wenn beispielsweise ein Benutzer über delegierte Berechtigungen/Bereiche aufgerufen wird, wird die Aufgabenliste des Benutzers abgerufen. Andererseits kann ein Aufruf einer App über die Berechtigungen/Rollen der App die gesamte To-Do-Liste in Anspruch nehmen. In diesem Artikel führen wir jedoch nur einen Anwendungsaufruf durch, sodass wir keine delegierten Bereiche/Berechtigungen konfigurieren müssen.
Nächste Schritte
lernen wieHolen Sie sich ein Zugriffstoken und rufen Sie dann eine Web-API in Ihrer eigenen Node.js-Daemon-Anwendung auf.
lernen wieVerwenden Sie Client-Zertifikate anstelle von Geheimnissen, um sich bei Ihrer Node.js-Webanwendung zu authentifizieren.
Lerne mehr überBerechtigungen und Einwilligung.