Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: Mitarbeitermandanten
Externe Mandanten (weitere Informationen)
In dieser Schnellstartanleitung verwenden Sie eine Beispieldaemonanwendung, um ein Zugriffstoken abzurufen und eine geschützte Web-API mithilfe der Microsoft Authentication Library (MSAL) aufzurufen.
Bevor Sie beginnen, verwenden Sie die Auswahl eines Mandantentyps oben auf dieser Seite, um den Mandantentyp auszuwählen. Die Microsoft Entra-ID stellt zwei Mandantenkonfigurationen, Mitarbeiter und externe Konfigurationen bereit. Eine Mandantenkonfiguration für Mitarbeiter richtet sich an Ihre Mitarbeiter, interne Apps und andere Organisationsressourcen. Ein externer Mandant richtet sich an Ihre kundenorientierten Apps.
Die Beispiel-App, die Sie in dieser Schnellstartanleitung verwenden, ruft ein Zugriffstoken zum Aufrufen der Microsoft Graph-API ab.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie noch kein Konto besitzen, erstellen Sie kostenlos ein Konto.
- Dieses Azure-Konto muss über Berechtigungen zum Verwalten von Anwendungen verfügen. Zu den folgenden Microsoft Entra-Rollen gehören die erforderlichen Berechtigungen:
- Anwendungsadministrator
- Anwendungsentwickler
- Cloudanwendungsadministrator
- Ein Mitarbeitermandant. Sie können Ihr Standardverzeichnis verwenden oder einen neuen Mandanten einrichten.
- Registrieren Sie eine neue App im Microsoft Entra Admin Center, die nur für Konten in diesem Organisationsverzeichnis konfiguriert ist. Weitere Informationen finden Sie unter Registrieren einer Anwendung . Notieren Sie die folgenden Werte auf der Anwendungsübersichtsseite für die spätere Verwendung:
- Anwendungs-ID (Client)
- Verzeichnis-ID (Mandant)
- Fügen Sie Ihrer App-Registrierung einen geheimen Clientschlüssel hinzu. Verwenden Sie keine geheimen Clientschlüssel in Produktions-Apps. Verwenden Sie stattdessen Zertifikate oder Verbundanmeldeinformationen. Weitere Informationen finden Sie unter Hinzufügen von Anmeldeinformationen zu Ihrer Anwendung.
- Eine Mindestanforderung des .NET 6.0 SDK.
- Visual Studio 2022 oder Visual Studio Code.
Erteilen von API-Berechtigungen für die Daemon-App
Damit daemon-App auf Daten in der Microsoft Graph-API zugreifen kann, erteilen Sie ihr die erforderlichen Berechtigungen. Die Daemon-App benötigt Anwendungstypberechtigungen. Benutzer können nicht mit einer Daemonanwendung interagieren, sodass der Mandantenadministrator diesen Berechtigungen zustimmen muss. Führen Sie die folgenden Schritte aus, um die Berechtigungen zu erteilen und zuzustimmen:
Für die .NET-Daemon-App müssen Sie keine Berechtigungen erteilen und zustimmen. Diese Daemon-App liest ihre eigenen App-Registrierungsinformationen, sodass sie dies tun kann, ohne dass Ihnen Anwendungsberechtigungen erteilt werden.
Klonen oder Herunterladen der Beispielanwendung
Um die Beispielanwendung zu erhalten, können Sie sie entweder von GitHub klonen oder als .zip Datei herunterladen.
- Um das Beispiel zu klonen, öffnen Sie eine Eingabeaufforderung, und navigieren Sie zu der Stelle, an der Sie das Projekt erstellen möchten, und geben Sie den folgenden Befehl ein:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-dotnet.git
- Laden Sie die datei .zip herunter. Extrahieren Sie ihn in einen Dateipfad, in dem die Länge des Namens weniger als 260 Zeichen beträgt.
Konfigurieren des Projekts
Führen Sie die folgenden Schritte aus, um Ihre App-Registrierungsdetails im Beispiel der Clientdaemon-App zu verwenden:
Öffnen Sie ein Konsolenfenster, und navigieren Sie dann zum Verzeichnis "ms-identity-docs-code-dotnet/console-daemon ":
cd ms-identity-docs-code-dotnet/console-daemon
Öffnen Sie Program.cs , und ersetzen Sie den Dateiinhalt durch den folgenden Codeausschnitt.
// Full directory URL, in the form of https://login.microsoftonline.com/<tenant_id> Authority = " https://login.microsoftonline.com/Enter_the_tenant_ID_obtained_from_the_Microsoft_Entra_admin_center", // 'Enter the client ID obtained from the Microsoft Entra admin center ClientId = "Enter the client ID obtained from the Microsoft Entra admin center", // Client secret 'Value' (not its ID) from 'Client secrets' in the Microsoft Entra admin center ClientSecret = "Enter the client secret value obtained from the Microsoft Entra admin center", // Client 'Object ID' of app registration in Microsoft Entra admin center - this value is a GUID ClientObjectId = "Enter the client Object ID obtained from the Microsoft Entra admin center"
-
Authority
– Die Autorität ist eine URL, die ein Verzeichnis angibt, von dem MSAL Token anfordern kann. Ersetzen Sie Enter_the_tenant_ID_obtained_from_the_Microsoft_Entra_admin_center durch den zuvor aufgezeichneten Verzeichnis-ID-Wert (Mandant ). -
ClientId
- Der Bezeichner der Anwendung, auch als Client bezeichnet. Ersetzen Sie den Text in Anführungszeichen durch den Wert, derApplication (client) ID
zuvor auf der Übersichtsseite der registrierten Anwendung aufgezeichnet wurde. -
ClientSecret
– Der geheime Clientschlüssel, der für die Anwendung im Microsoft Entra Admin Center erstellt wurde. Geben Sie den Wert des geheimen Clientschlüssels ein. -
ClientObjectId
- Die Objekt-ID der Clientanwendung. Ersetzen Sie den Text in Anführungszeichen durch den Wert, denObject ID
Sie zuvor auf der Übersichtsseite der registrierten Anwendung aufgezeichnet haben.
-
Ausführen und Testen der Anwendung
Sie haben Ihre Beispiel-App konfiguriert. Sie können mit der Ausführung fortfahren und testen.
Führen Sie im Konsolenfenster den folgenden Befehl aus, um die Anwendung zu erstellen und auszuführen:
dotnet run
Sobald die Anwendung erfolgreich ausgeführt wird, wird eine Antwort ähnlich wie der folgende Codeausschnitt angezeigt (gekürzt aus Platzgründen):
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#applications/$entity",
"id": "00001111-aaaa-2222-bbbb-3333cccc4444",
"deletedDateTime": null,
"appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"applicationTemplateId": null,
"disabledByMicrosoftStatus": null,
"createdDateTime": "2021-01-17T15:30:55Z",
"displayName": "identity-dotnet-console-app",
"description": null,
"groupMembershipClaims": null,
...
}
Funktionsweise
Eine Daemonanwendung erwirbt ein Token im Namen von sich selbst (nicht im Auftrag eines Benutzers). Benutzer können nicht mit einer Daemon-Anwendung interagieren, da sie eine eigene Identität erfordert. Dieser Anwendungstyp fordert ein Zugriffstoken mithilfe der Anwendungsidentität an, indem seine Anwendungs-ID, Anmeldeinformationen (geheimer Schlüssel oder Zertifikat) und ein Anwendungs-ID-URI angezeigt werden. Die Daemon-Anwendung verwendet den standardmäßigen OAuth 2.0-Clientanmeldeinformationsfluss , um ein Zugriffstoken abzurufen.
Die App erwirbt ein Zugriffstoken von der Microsoft Identity Platform. Das Zugriffstoken ist für die Microsoft Graph-API vorgesehen. Die App verwendet dann das Zugriffstoken, um eigene Anwendungsregistrierungsdetails von der Microsoft Graph-API anzufordern. Die App kann jede Ressource aus der Microsoft Graph-API anfordern, solange das Zugriffstoken über die richtigen Berechtigungen verfügt.
Im Beispiel wird veranschaulicht, wie ein unbeaufsichtigter Auftrag oder Windows-Dienst mit einer Anwendungsidentität anstelle der Identität eines Benutzers ausgeführt werden kann.
Verwandte Inhalte
Lernen Sie, indem Sie diese ASP.NET Web-App mit der Reihe Lernprogramm erstellen: Registrieren sie eine Anwendung bei der Microsoft Identity Platform.
Schnellstart: Bereitstellen einer ASP.NET Web-App für Azure App Service
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie noch kein Konto besitzen, erstellen Sie kostenlos ein Konto.
- Dieses Azure-Konto muss über Berechtigungen zum Verwalten von Anwendungen verfügen. Zu den folgenden Microsoft Entra-Rollen gehören die erforderlichen Berechtigungen:
- Anwendungsadministrator
- Anwendungsentwickler
- Cloudanwendungsadministrator
- Ein externer Mandant. Um eine zu erstellen, wählen Sie aus den folgenden Methoden aus:
- (Empfohlen) Verwenden Sie die Externe ID-Erweiterung von Microsoft Entra , um einen externen Mandanten direkt in Visual Studio Code einzurichten.
- Erstellen Sie einen neuen externen Mandanten im Microsoft Entra Admin Center.
- Registrieren Sie eine neue App im Microsoft Entra Admin Center mit der folgenden Konfiguration. Weitere Informationen finden Sie unter Registrieren einer Anwendung.
- Name: ciam-daemon-app
- Unterstützte Kontotypen: Nur Konten in diesem Organisationsverzeichnis (einzelner Mandant)
- Visual Studio Code oder ein anderer Code-Editor.
- .NET 7.0 oder höher.
- Node.js (nur für die Node-Implementierung)
Erstellen eines geheimen Clientschlüssels
Erstellen Sie einen geheimen Clientschlüssel für die registrierte Anwendung. Die Anwendung verwendet den geheimen Clientschlüssel, um seine Identität zu beweisen, wenn er Token anfordert:
- Wählen Sie auf der Seite " App-Registrierungen " die Anwendung aus, die Sie erstellt haben (z. B. den geheimen Web-App-Clientschlüssel), um die Zugehörige Übersichtsseite zu öffnen.
- Wählen Sie unter "Verwalten" die Option "Zertifikate und geheime Geheime>>Clientschlüssel" aus.
- Geben Sie im Feld "Beschreibung " eine Beschreibung für den geheimen Clientschlüssel ein (z. B. geheimer Web-App-Clientschlüssel).
- Wählen Sie unter "Ablaufen" eine Dauer aus, für die der geheime Schlüssel gültig ist (gemäß Den Sicherheitsregeln Ihrer Organisation), und wählen Sie dann "Hinzufügen" aus.
- Notieren Sie den Wert des geheimen Schlüssels. Sie verwenden diesen Wert für die Konfiguration in einem späteren Schritt. Der geheime Wert wird nicht mehr angezeigt und kann nicht auf irgendeine Weise abgerufen werden, nachdem Sie von den Zertifikaten und geheimen Schlüsseln entfernt sind. Stellen Sie sicher, dass Sie sie aufzeichnen.
Wenn Sie Anmeldeinformationen für eine vertrauliche Clientanwendung erstellen:
Microsoft empfiehlt, ein Zertifikat anstelle eines geheimen Clientschlüssels zu verwenden, bevor Sie die Anwendung in eine Produktionsumgebung verschieben. Weitere Informationen zur Verwendung eines Zertifikats finden Sie in den Anweisungen in den Anmeldeinformationen für die Anwendungsauthentifizierung von Microsoft Identity Platform.
Zu Testzwecken können Sie ein selbstsigniertes Zertifikat erstellen und Ihre Apps für die Authentifizierung konfigurieren. In der Produktion sollten Sie jedoch ein Zertifikat erwerben, das von einer bekannten Zertifizierungsstelle signiert ist, und dann Azure Key Vault zum Verwalten des Zertifikatzugriffs und der Lebensdauer verwenden.
Erteilen von API-Berechtigungen für die Daemon-App
Wählen Sie auf der Seite "App-Registrierungen " die anwendung aus, die Sie erstellt haben, z. B. ciam-client-app.
Wählen Sie unter Verwalten die Option API-Berechtigungen.
Wählen Sie unter "Konfigurierte Berechtigungen" die Option "Berechtigung hinzufügen" aus.
Wählen Sie die APIs aus, die meine Organisation verwendet .
Wählen Sie in der Liste der APIs die API aus, z. B. ciam-ToDoList-api.
Wählen Sie die Option "Anwendungsberechtigungen" aus. Wir wählen diese Option aus, da sich die App als sich selbst anmeldet, aber nicht im Namen eines Benutzers.
Wählen Sie in der Berechtigungsliste TodoList.Read.All, ToDoList.ReadWrite.All (verwenden Sie bei Bedarf das Suchfeld).
Wählen Sie die Schaltfläche "Berechtigungen hinzufügen" aus.
An diesem Punkt haben Sie die Berechtigungen ordnungsgemäß zugewiesen. Da die Daemon-App benutzern jedoch nicht die Interaktion mit dieser App gestattet, können die Benutzer selbst diesen Berechtigungen nicht zustimmen. Um dieses Problem zu beheben, müssen Sie als Administrator diesen Berechtigungen im Namen aller Benutzer im Mandanten zustimmen:
- Wählen Sie " Administratorzustimmung für <Ihren Mandantennamen> erteilen" und dann "Ja" aus.
- Wählen Sie "Aktualisieren" aus, und vergewissern Sie sich, dass der Name< Ihres Mandanten für > beide Berechtigungen unter "Status" angezeigt wird.
Konfigurieren von App-Rollen
Eine API muss mindestens eine App-Rolle für Anwendungen veröffentlichen, die auch als Anwendungsberechtigung bezeichnet werden, damit die Client-Apps ein Zugriffstoken als sich selbst abrufen können. Anwendungsberechtigungen sind die Art der Berechtigungen, die APIs veröffentlichen sollten, wenn sie die erfolgreiche Authentifizierung von Clientanwendungen als sich selbst ermöglichen und keine Benutzer anmelden müssen. Führen Sie die folgenden Schritte aus, um eine Anwendungsberechtigung zu veröffentlichen:
Wählen Sie auf der Seite " App-Registrierungen " die Anwendung aus, die Sie erstellt haben (z. B. ciam-ToDoList-api), um die Zugehörige Übersichtsseite zu öffnen.
Wählen Sie unter "Verwalten"Die App-Rollen aus.
Wählen Sie " App-Rolle erstellen" aus, und geben Sie dann die folgenden Werte ein, und wählen Sie dann "Übernehmen" aus, um Ihre Änderungen zu speichern:
Eigentum Wert Anzeigename ToDoList.Read.All Zulässige Membertypen Anwendungen Wert ToDoList.Read.All Description Zulassen, dass die App die ToDo-Liste jedes Benutzers mithilfe der "TodoListApi" lesen kann Möchten Sie diese App-Rolle aktivieren? Beibehalten des Checkens Wählen Sie erneut " App-Rolle erstellen " aus, und geben Sie dann die folgenden Werte für die zweite App-Rolle ein, und wählen Sie dann "Übernehmen" aus, um Ihre Änderungen zu speichern:
Eigentum Wert Anzeigename ToDoList.ReadWrite.All Zulässige Membertypen Anwendungen Wert ToDoList.ReadWrite.All Description Zulassen, dass die App die ToDo-Liste aller Benutzer mithilfe der "ToDoListApi" lesen und schreiben kann Möchten Sie diese App-Rolle aktivieren? Beibehalten des Checkens
Konfigurieren optionaler Ansprüche
Sie können den optionalen idtyp-Anspruch hinzufügen, um die Web-API zu ermitteln, ob es sich bei einem Token um ein App-Token oder ein App+-Benutzertoken handelt. Obwohl Sie eine Kombination aus Scp - und Rollenansprüchen für denselben Zweck verwenden können, ist die Verwendung des idtyp-Anspruchs die einfachste Möglichkeit, ein App-Token und ein App + Benutzertoken voneinander zu unterscheiden. Der Wert dieses Anspruchs ist beispielsweise die App , wenn das Token ein nur-App-Token ist.
Klonen oder Herunterladen von Beispieldaemonanwendung und Web-API
Um die Beispielanwendung zu erhalten, können Sie sie entweder von GitHub klonen oder als .zip Datei herunterladen.
Um das Beispiel zu klonen, öffnen Sie eine Eingabeaufforderung, und navigieren Sie zu der Stelle, an der Sie das Projekt erstellen möchten, und geben Sie den folgenden Befehl ein:
git clone https://github.com/Azure-Samples/ms-identity-ciam-javascript-tutorial.git
Alternativ können Sie die Beispiele .zip Datei herunterladen und dann in einen Dateipfad extrahieren, in dem die Länge des Namens weniger als 260 Zeichen beträgt.
Installieren von Projektabhängigkeiten
Öffnen Sie ein Konsolenfenster, und wechseln Sie zu dem Verzeichnis, das die Node.js Beispiel-App enthält:
cd 2-Authorization\3-call-api-node-daemon\App
Führen Sie die folgenden Befehle aus, um App-Abhängigkeiten zu installieren:
npm install && npm update
Konfigurieren der Beispieldaemon-App und -API
Führen Sie die folgenden Schritte aus, um Ihre App-Registrierungsdetails im Clientweb-App-Beispiel zu verwenden:
Öffnen
App\authConfig.js
Sie in Ihrem Code-Editor die Datei.Suchen Sie den Platzhalter:
Enter_the_Application_Id_Here
und ersetzen Sie sie durch die Anwendungs-ID (Client) der Daemon-App, die Sie zuvor registriert haben.Enter_the_Tenant_Subdomain_Here
und ersetzen Sie sie durch die Unterdomäne "Directory (Mandant)". Wenn ihre primäre Mandantendomäne beispielsweise lautetcontoso.onmicrosoft.com
, verwenden Siecontoso
. Wenn Sie nicht über Ihren Mandantennamen verfügen, erfahren Sie, wie Sie Ihre Mandantendetails lesen.Enter_the_Client_Secret_Here
und ersetzen Sie ihn durch den Geheimwert der Daemon-App, den Sie zuvor kopiert haben.Enter_the_Web_Api_Application_Id_Here
und ersetzen Sie sie durch die Anwendungs-ID (Client-ID) der Web-API, die Sie zuvor kopiert haben.
So verwenden Sie ihre App-Registrierung im Web-API-Beispiel:
Öffnen
API\ToDoListAPI\appsettings.json
Sie in Ihrem Code-Editor die Datei.Suchen Sie den Platzhalter:
Enter_the_Application_Id_Here
und ersetzen Sie sie durch die Anwendungs-ID (Client-ID) der Web-API, die Sie kopiert haben.Enter_the_Tenant_Id_Here
und ersetzen Sie sie durch die Zuvor kopierte Verzeichnis-ID (Mandant).Enter_the_Tenant_Subdomain_Here
und ersetzen Sie sie durch die Unterdomäne "Directory (Mandant)". Wenn ihre primäre Mandantendomäne beispielsweise lautetcontoso.onmicrosoft.com
, verwenden Siecontoso
. Wenn Sie nicht über Ihren Mandantennamen verfügen, erfahren Sie, wie Sie Ihre Mandantendetails lesen.
Ausführen und Testen der Beispieldaemon-App und -API
Sie haben Ihre Beispiel-App konfiguriert. Sie können mit der Ausführung fortfahren und testen.
Öffnen Sie ein Konsolenfenster, und führen Sie dann die Web-API mit den folgenden Befehlen aus:
cd 2-Authorization\3-call-api-node-daemon\API\ToDoListAPI dotnet run
Führen Sie den Web App-Client mithilfe der folgenden Befehle aus:
2-Authorization\3-call-api-node-daemon\App node . --op getToDos
Wenn Ihre Daemon-App und die Web-API erfolgreich ausgeführt werden, sollte im Konsolenfenster etwas ähnliches wie das folgende JSON-Array angezeigt werden.
{
"id": 1,
"owner": "3e8....-db63-43a2-a767-5d7db...",
"description": "Pick up grocery"
},
{
"id": 2,
"owner": "c3cc....-c4ec-4531-a197-cb919ed.....",
"description": "Finish invoice report"
},
{
"id": 3,
"owner": "a35e....-3b8a-4632-8c4f-ffb840d.....",
"description": "Water plants"
}
Funktionsweise
Die Node.js-App verwendet den Fluss zur Gewährung von OAuth 2.0-Clientanmeldeinformationen , um ein Zugriffstoken für sich selbst und nicht für den Benutzer abzurufen. Das Zugriffstoken, das die App anfordert, enthält die Berechtigungen, die als Rollen dargestellt werden. Der Clientanmeldeinformationsfluss verwendet diesen Satz von Berechtigungen anstelle von Benutzerbereichen für Anwendungstoken. Sie haben diese Anwendungsberechtigungen in der Web-API zuvor verfügbar gemacht und dann der Daemon-App gewährt.
Auf der API-Seite muss eine .NET-Beispielweb-API die API überprü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.
Zugriff auf Daten
Ein Web-API-Endpunkt sollte darauf vorbereitet sein, Aufrufe von Benutzern und Anwendungen anzunehmen. Daher sollte es eine Möglichkeit haben, auf jede Anfrage entsprechend zu antworten. Beispielsweise erhält ein Anruf eines Benutzers über delegierte Berechtigungen/Bereiche die Daten des Benutzers to-do Liste. Andererseits kann ein Aufruf einer Anwendung über Anwendungsberechtigungen/-rollen die gesamte to-do Liste empfangen. In diesem Artikel führen wir jedoch nur einen Anwendungsaufruf durch, daher mussten keine delegierten Berechtigungen/Bereiche konfiguriert werden.