Auswahl eines Microsoft Graph Authentifizierungsanbieters basieren auf einem Szenario

Authentifizierungsanbieter implementieren den Code, der zum Abrufen eines Tokens mithilfe der Microsoft Authentication Library (MSAL) erforderlich ist. Sie behandeln eine Reihe potenzieller Fehler in Fällen wie inkrementelle Zustimmung, abgelaufene Kennwörter und bedingten Zugriff und legen dann den Autorisierungsheader der HTTP-Anforderung fest. Die folgende Tabelle listet die Menge der Anbieter auf, die zu den Szenarien für verschiedene Anwendungstypen passen.

Szenario Fluss/Zuweisung Zielgruppe Anbieter
Einzelseiten-App
Implizit Delegierter Verbraucher/Organisation Impliziter Anbieter
Web-App, welche Web-APIs aufruft
Autorisierungscode Delegierter Verbraucher/Organisation Autorisierungscodeanbieter
Client-Anmeldeinformationen Nur App Client-Anmeldeinformationsanbieter
Web-API, welches Web-APIs aufruft
Im Auftrag von Delegierter Verbraucher/Organisation „Im Auftrag von“-Anbieter
Client-Anmeldeinformationen Nur App Client-Anmeldeinformationsanbieter
Desktop-App, welche Web-APIs aufruft
Interaktiv Delegierter Verbraucher/Organisation Interaktiver Anbieter
Integriertes Windows Delegierte Organisation Integrierter Windows-Anbieter
Ressourcenbesitzer Delegierte Organisation Benutzername/Kennwort-Anbieter
Gerätecode Delegierte Organisation Gerätecodeanbieter
Daemon-App
Client-Anmeldeinformationen Nur App Client-Anmeldeinformationsanbieter
Mobile App, welche Web-APIs aufruft
Interaktiv Delegierter Verbraucher/Organisation Interaktiver Anbieter

Hinweis: Java und Android-Entwickler müssen die azure-identity-Bibliothek hinzufügen, um Zugriff auf die verschiedenen Anmeldeinformationentypen zu erhalten.

Autorisierungscodeanbieter

Der Autorisierungscodeablauf ermöglicht es nativen und Web-Apps, Token im Namen des Benutzers sicher zu erhalten. Weitere Informationen finden Sie unter Microsoft Identity Plattform und OAuth 2.0 Autorisierungscodeablauf.

IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
    .Create(clientId)
    .WithRedirectUri(redirectUri)
    .WithClientSecret(clientSecret) // or .WithCertificate(certificate)
    .Build();

AuthorizationCodeProvider authProvider = new AuthorizationCodeProvider(confidentialClientApplication, scopes);

Client-Anmeldeinformationsanbieter

Der Ablauf für Client-Anmeldeinformationen ermöglicht die Ausführung von Dienstanwendungen ohne Benutzerinteraktion. Der Zugriff basiert auf der Identität der Anwendung. Weitere Informationen finden Sie unter Microsoft Identity Plattform und OAuth 2.0 Client-Anmeldeinformationsablauf.

IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
    .Create(clientId)
    .WithTenantId(tenantID)
    .WithClientSecret(clientSecret)
    .Build();

ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);

„Im Auftrag von“-Anbieter

Der „im Auftrag von“-Ablauf ist anwendbar, wenn Ihre Anwendung eine Dienst-/Web-API aufruft, die wiederum die Microsoft Graph-API aufruft. Weitere Informationen finden Sie unter Microsoft Identity Plattform und OAuth 2.0 „im Auftrag von“-Ablauf.

IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
    .Create(clientId)
    .WithRedirectUri(redirectUri)
    .WithClientSecret(clientSecret)
    .Build();

OnBehalfOfProvider authProvider = new OnBehalfOfProvider(confidentialClientApplication, scopes);

Impliziter Anbieter

Der implizite Zuweisungsablauf wird in Browser-basierten Anwendungen verwendet. Weitere Informationen finden Sie in der Microsoft-Identitätsplattform und impliziter Zuweisungsablauf.

Nicht zutreffend.

Gerätecodeanbieter

Der Gerätecodeablauf erlaubt das Anmelden an Geräte über ein anderes Gerät. Weitere Informationen finden Sie unter Microsoft Identity Plattform und OAuth 2.0 Gerätecodeablauf.

IPublicClientApplication publicClientApplication = PublicClientApplicationBuilder
            .Create(clientId)
            .Build();

Func<DeviceCodeResult, Task> deviceCodeReadyCallback = async dcr => await Console.Out.WriteLineAsync(dcr.Message);

DeviceCodeProvider authProvider = new DeviceCodeProvider(publicClientApplication, scopes, deviceCodeReadyCallback);

Integrierter Windows-Anbieter

Der integrierte Windows-Ablauf bietet Windows-Computern die Möglichkeit, stillschweigend ein Zugriffstoken zu erhalten, wenn sie einer Domäne beitreten. Weitere Informationen finden Sie unter Integrierte Windows-Authentifizierung.

IPublicClientApplication publicClientApplication = PublicClientApplicationBuilder
            .Create(clientId)
            .WithTenantId(tenantID)
            .Build();

IntegratedWindowsAuthenticationProvider authProvider = new IntegratedWindowsAuthenticationProvider(publicClientApplication, scopes);

Interaktiver Anbieter

Der interaktive Ablauf wird von mobilen (Xamarin und UWP) sowie Desktop-Anwendungen verwendet, um Microsoft Graph im Auftrag des Benutzers aufzurufen. Weitere Informationen finden Sie unter Token interaktiv erfassen.

IPublicClientApplication publicClientApplication = PublicClientApplicationBuilder
            .Create(clientId)
            .Build();

InteractiveAuthenticationProvider authProvider = new InteractiveAuthenticationProvider(publicClientApplication, scopes);

Benutzername/Kennwort-Anbieter

Der Benutzername/Kennwort-Anbieter ermöglicht es einer Anwendung, einen Benutzer mit seinem Benutzernamen und Kennwort anzumelden. Verwenden Sie diesen Ablauf nur, wenn sie keinen anderen OAuth-Ablauf verwenden können. Weitere Informationen finden Sie unter Microsoft Identity Plattform und OAuth 2.0 Ressourcenbesitzer Kennwort-Anmeldeinformationen.

IPublicClientApplication publicClientApplication = PublicClientApplicationBuilder
            .Create(clientId)
            .WithTenantId(tenantID)
            .Build();

UsernamePasswordProvider authProvider = new UsernamePasswordProvider(publicClientApplication, scopes);

GraphServiceClient graphClient = new GraphServiceClient(authProvider);

User me = await graphClient.Me.Request()
                .WithUsernamePassword(email, password)
                .GetAsync();

Nächste Schritte