Schnellstart: Abrufen eines Tokens und Aufrufen der Microsoft Graph-API aus einer Python-Daemon-App
In dieser Schnellstartanleitung laden Sie ein Codebeispiel herunter und führen es aus, das zeigt, wie eine Python-Anwendung mithilfe der App-Identität ein Zugriffstoken abrufen kann, um die Microsoft Graph-API aufzurufen und eine Liste mit Benutzern im Verzeichnis anzuzeigen. Das Codebeispiel veranschaulicht, wie ein unbeaufsichtigter Auftrag oder Windows-Dienst mit einer Anwendungsidentität anstelle der Identität eines Benutzers ausgeführt werden kann.
Voraussetzungen
Für dieses Beispiel benötigen Sie Folgendes:
Registrieren und Herunterladen Ihrer Schnellstart-App
Schritt 1: Anwendung registrieren
Tipp
Die Schritte in diesem Artikel können je nach dem Portal, mit dem Sie beginnen, geringfügig variieren.
Führen Sie die folgenden Schritte aus, um Ihre Anwendung zu registrieren und Ihrer Projektmappe manuell die Registrierungsinformationen Ihrer App hinzuzufügen:
- Melden Sie sich beim Microsoft Entra Admin Center an.
- Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie das Symbol für Einstellungen im oberen Menü, um zum Mandanten zu wechseln, in dem Sie die Anwendung über das Menü Verzeichnisse + Abonnements registrieren möchten.
- Navigieren Sie zu Identität>Anwendungen>App-Registrierungen, und wählen Sie Neue Registrierung aus.
- Geben Sie unter Name einen Namen für Ihre Anwendung ein (beispielsweise
Daemon-console
). Benutzern Ihrer App wird wahrscheinlich dieser Namen angezeigt. Sie können ihn später ändern. - Wählen Sie Registrieren aus.
- Wählen Sie unter Verwalten die Option Zertifikate und Geheimnisse aus.
- Wählen Sie unter Geheimer Clientschlüssel die Option Neuer geheimer Clientschlüssel aus, geben Sie einen Namen ein, und wählen Sie dann Hinzufügen aus. Notieren Sie den Wert für den geheimen Schlüssel an einem sicheren Ort, damit Sie ihn in einem späteren Schritt verwenden können.
- Wählen Sie unter Verwalten die Optionen API-Berechtigungen>Berechtigung hinzufügen aus. Wählen Sie Microsoft Graph.
- Wählen Sie Anwendungsberechtigungen.
- Wählen Sie unter dem Knoten Benutzer die Option User.Read.All und dann Berechtigungen hinzufügen aus.
Schritt 2: Herunterladen des Python-Projekts
Laden Sie das Python-Daemon-Projekt herunter.
Schritt 3: Konfigurieren des Python-Projekts
Extrahieren Sie die ZIP-Datei in einem lokalen Ordner in der Nähe des Datenträger-Stammverzeichnisses (beispielsweise C:\Azure-Samples).
Navigieren Sie zum Unterordner 1-Call-MsGraph-WithSecret.
Bearbeiten Sie parameters.json, und ersetzen Sie die Felder
authority
,client_id
undsecret
durch den folgenden Ausschnitt:"authority": "https://login.microsoftonline.com/Enter_the_Tenant_Id_Here", "client_id": "Enter_the_Application_Id_Here", "secret": "Enter_the_Client_Secret_Here"
Hierbei gilt:
Enter_the_Application_Id_Here
ist die Anwendungs-ID (Client) für die von Ihnen registrierte Anwendung.Enter_the_Tenant_Id_Here
: Ersetzen Sie diesen Wert durch die Mandanten-ID oder den Mandantennamen (z.B. „contoso.microsoft.com“).Enter_the_Client_Secret_Here
: Ersetzen Sie diesen Wert durch den geheimen Clientschlüssel, den Sie in Schritt 1 erstellt haben.
Tipp
Die Werte für Anwendungs-ID (Client) und Verzeichnis-ID (Mandant) finden Sie im Microsoft Entra Admin Center auf der Seite Übersicht der App. Navigieren Sie zum Generieren eines neuen Schlüssels zur Seite Zertifikate & Geheimnisse.
Standardbenutzer
Wenn Sie ein Standardbenutzerkonto auf Ihrem Mandanten haben, bitten Sie einen globalen Admin, die Administratoreinwilligung für Ihre Anwendung zu erteilen. Übermitteln Sie hierzu die folgende URL an Ihren Administrator:
https://login.microsoftonline.com/Enter_the_Tenant_Id_Here/adminconsent?client_id=Enter_the_Application_Id_Here
Hierbei gilt:
Enter_the_Tenant_Id_Here
: Ersetzen Sie diesen Wert durch die Mandanten-ID oder den Mandantennamen (z.B. „contoso.microsoft.com“).Enter_the_Application_Id_Here
ist die Anwendungs-ID (Client) für die von Ihnen zuvor registrierte Anwendung.
Schritt 5: Ausführen der Anwendung
Sie müssen einmalig die Abhängigkeiten dieses Beispiels installieren.
pip install -r requirements.txt
Führen Sie dann die Anwendung über die Eingabeaufforderung oder über die Konsole aus:
python confidential_client_secret_sample.py parameters.json
Die Konsolenausgabe sollte ein JSON-Fragment enthalten, das eine Liste der Benutzer in Ihrem Microsoft Entra-Verzeichnis darstellt.
Wichtig
Für die Anwendung in dieser Schnellstartanleitung wird ein Clientgeheimnis verwendet, um sich selbst als vertraulicher Client zu identifizieren. Da das Clientgeheimnis Ihren Projektdateien als Nur-Text hinzugefügt wird, wird aus Sicherheitsgründen empfohlen, ein Zertifikat anstelle eines Clientgeheimnisses zu verwenden, bevor die Anwendung als Produktionsanwendung eingestuft wird. Weitere Informationen zur Verwendung eines Zertifikats finden Sie in diesen Anweisungen im zweiten Ordner (2-Call-MsGraph-WithCertificate) des GitHub-Repositorys für dieses Beispiel.
Weitere Informationen
MSAL Python
MSAL Python ist die Bibliothek zum Anmelden von Benutzern und Anfordern von Token, die für den Zugriff auf eine durch Microsoft Identity Platform geschützte API verwendet werden. In dieser Schnellstartanleitung werden wie beschrieben Token angefordert, indem keine delegierten Berechtigungen verwendet werden, sondern die eigene Identität der Anwendung. Der hier genutzte Authentifizierungsablauf wird als OAuth-Ablauf mit Clientanmeldeinformationen bezeichnet. Weitere Informationen zur Verwendung von MSAL Python mit Daemon-Apps finden Sie in diesem Artikel.
MSAL Python kann mithilfe des folgenden pip-Befehls installiert werden:
pip install msal
MSAL-Initialisierung
Sie können den Verweis auf MSAL hinzufügen, indem Sie den folgenden Code hinzufügen:
import msal
Initialisieren Sie MSAL anschließend mit dem folgenden Code:
app = msal.ConfidentialClientApplication(
config["client_id"], authority=config["authority"],
client_credential=config["secret"])
Hierbei gilt: | Beschreibung |
---|---|
config["secret"] |
Der geheime Clientschlüssel, der für die Anwendung im Microsoft Entra Admin Center erstellt wurde. |
config["client_id"] |
Die Anwendungs-ID (Client) der Anwendung, die im Microsoft Entra Admin Center registriert ist. Sie finden diesen Wert auf der Seite Übersicht der App im Microsoft Entra Admin Center. |
config["authority"] |
Der STS-Endpunkt für den zu authentifizierenden Benutzer. Normalerweise https://login.microsoftonline.com/{tenant} für die öffentliche Cloud, wobei „{tenant}“ der Name Ihres Mandanten bzw. Ihre Mandanten-ID ist. |
Weitere Informationen finden Sie in der Referenzdokumentation für ConfidentialClientApplication
.
Anfordern von Token
Verwenden Sie die AcquireTokenForClient
-Methode, um ein Token mit der Identität einer App anzufordern:
result = None
result = app.acquire_token_silent(config["scope"], account=None)
if not result:
logging.info("No suitable token exists in cache. Let's get a new one from AAD.")
result = app.acquire_token_for_client(scopes=config["scope"])
Hierbei gilt: | BESCHREIBUNG |
---|---|
config["scope"] |
Enthält die angeforderten Bereiche. Für vertrauliche Clients sollte ein Format wie {Application ID URI}/.default verwendet werden. Hiermit wird angegeben, dass es sich bei den angeforderten Bereichen um diejenigen handelt, die in dem im Microsoft Entra Admin Center festgelegten App-Objekt statisch definiert sind (für Microsoft Graph verweist {Application ID URI} auf https://graph.microsoft.com ). Für benutzerdefinierte Web-APIs wird {Application ID URI} im Microsoft Entra Admin Center unter App-Registrierungen im Abschnitt Eine API verfügbar machen definiert. |
Weitere Informationen finden Sie in der Referenzdokumentation für AcquireTokenForClient
.
Hilfe und Support
Wenn Sie Hilfe benötigen, ein Problem melden möchten oder sich über Ihre Supportoptionen informieren möchten, finden Sie weitere Informationen unter Hilfe und Support für Entwickler.
Nächste Schritte
Weitere Informationen zu Daemon-Anwendungen finden Sie auf der Landing Page des Szenarios.