Auswählen eines Microsoft Graph-Authentifizierungsanbieters basierend auf dem SzenarioChoose a Microsoft Graph authentication provider based on scenario

Authentifizierungsanbieter implementieren den Code, der zum Abrufen eines Tokens mithilfe der Microsoft-Authentifizierungsbibliothek (MSAL) erforderlich ist. Behandeln einer Reihe von potenziellen Fehlern für Fälle wie inkrementelle Zustimmung, abgelaufene Kennwörter und bedingten Zugriff; und legen Sie dann den HTTP-Anforderungs Autorisierungsheader fest.Authentication providers implement the code required to acquire a token using the Microsoft Authentication Library (MSAL); handle a number of potential errors for cases like incremental consent, expired passwords, and conditional access; and then set the HTTP request authorization header. In der folgenden Tabelle ist die Gruppe von Anbietern aufgeführt, die den Szenarien für unterschiedliche Anwendungstypenentsprechen.The following table lists the set of providers that match the scenarios for different application types.

SzenarioScenario Flow/GrantFlow/Grant ZielgruppeAudience AnbieterProvider
Einzelseiten-AppSingle Page App
ImplizitImplicit Delegierter Consumer/orgDelegated Consumer/Org Impliziter AnbieterImplicit Provider
Webanwendung, die WebAPI-AufrufeWeb App that calls web APIs
Authorization CodeAuthorization Code Delegierter Consumer/orgDelegated Consumer/Org Autorisierungs Code AnbieterAuthorization Code Provider
Client AnmeldeinformationenClient Credentials Nur AppApp Only Client AnmeldeinformationsanbieterClient Credentials Provider
WebAPI, die webapis aufruftWeb API that calls web APIs
Im Auftrag vonOn Behalf Of Delegierter Consumer/orgDelegated Consumer/Org Im Auftrag von ProviderOn Behalf Of Provider
Client AnmeldeinformationenClient Credentials Nur AppApp Only Client AnmeldeinformationsanbieterClient Credentials Provider
Desktop-App, die webapis aufruftDesktop app that calls web APIs
InteraktivInteractive Delegierter Consumer/orgDelegated Consumer/Org Interaktiver AnbieterInteractive Provider
Integrierte FensterIntegrated Windows Delegierte orgDelegated Org Integrierter Windows-AnbieterIntegrated Windows Provider
RessourcenbesitzerResource Owner Delegierte orgDelegated Org Benutzername/KennwortanbieterUsername / Password Provider
Geräte CodeDevice Code Delegierte orgDelegated Org Geräte Code AnbieterDevice Code Provider
Daemon-AppDaemon app
Client AnmeldeinformationenClient Credentials Nur AppApp Only Client AnmeldeinformationsanbieterClient Credentials Provider
Mobile-App, die webapis aufruftMobile app that calls web APIs
InteraktivInteractive Delegierter Consumer/orgDelegated Consumer/Org Interaktiver AnbieterInteractive Provider

Autorisierungscode AnbieterAuthorization code provider

Durch den Autorisierungscode Fluss können systemeigene und Webanwendungen sicher Token im Namen des Benutzers abrufen.The authorization code flow enables native and web apps to securely obtain tokens in the name of the user. Weitere Informationen finden Sie unter Microsoft Identity Platform und OAuth 2,0 Authorization Code Flow.To learn more, see Microsoft identity platform and OAuth 2.0 authorization code flow.

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

AuthorizationCodeProvider authProvider = new AuthorizationCodeProvider(confidentialClientApplication, scopes);

Client AnmeldeinformationsanbieterClient credentials provider

Durch den Client-Anmelde Informationsfluss können Dienstanwendungen ohne Benutzereingriff ausgeführt werden.The client credential flow enables service applications to run without user interaction. Der Zugriff basiert auf der Identität der Anwendung.Access is based on the identity of the application. Weitere Informationen finden Sie unter Microsoft Identity Platform und OAuth 2,0 Client Credentials Flow.For more information, see Microsoft identity platform and the OAuth 2.0 client credentials flow.

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

ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);

Im Auftrag des AnbietersOn-behalf-of provider

Der im-Auftrag-von-Ablauf ist anwendbar, wenn Ihre Anwendung eine Dienst-/WebAPI aufruft, die wiederum die Microsoft Graph-API aufruft.The on-behalf-of flow is applicable when your application calls a service/web API which in turns calls the Microsoft Graph API. Weitere Informationen finden Sie unter Microsoft Identity Platform und OAuth 2,0 im Auftrag von FlowLearn more by reading Microsoft identity platform and OAuth 2.0 On-Behalf-Of flow

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

OnBehalfOfProvider authProvider = new OnBehalfOfProvider(confidentialClientApplication, scopes);

Impliziter AnbieterImplicit provider

Der implizite Grant-Fluss wird in browserbasierten Anwendungen verwendet.The implicit grant flow is used in browser-based applications. Weitere Informationen finden Sie unter Microsoft Identity Platform und impliziter Grant Flow.For more information, see Microsoft identity platform and Implicit grant flow.

Nicht zutreffendNot applicable.

Gerätecode AnbieterDevice code provider

Der Gerätecode Fluss ermöglicht das Anmelden an Geräten über ein anderes Gerät.The device code flow enables sign in to devices by way of another device. Ausführliche Informationen finden Sie unter Microsoft Identity Platform und OAuth 2,0 Device Code Flow.For details, see Microsoft identity platform and the OAuth 2.0 device code flow.

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-AnbieterIntegrated Windows provider

Der integrierte Windows-Fluss bietet Windows-Computern die Möglichkeit, automatisch ein Zugriffstoken zu erwerben, wenn Sie einer Domäne angehören.The integrated Windows flow provides a way for Windows computers to silently acquire an access token when they are domain joined. Ausführliche Informationen finden Sie unter integrierte Windows-Authentifizierung.For details, see Integrated Windows authentication.

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

IntegratedWindowsAuthenticationProvider authProvider = new IntegratedWindowsAuthenticationProvider(publicClientApplication, scopes);

Interaktiver AnbieterInteractive provider

Der interaktive Fluss wird von mobilen Anwendungen (Xamarin und UWP) und Desktops-Anwendungen verwendet, um Microsoft Graph im Namen eines Benutzers aufzurufen.The interactive flow is used by mobile applications (Xamarin and UWP) and desktops applications to call Microsoft Graph in the name of a user. Ausführliche Informationen finden Sie unter Acquiring Tokens interaktiv.For details, see Acquiring tokens interactively.

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

InteractiveAuthenticationProvider authProvider = new InteractiveAuthenticationProvider(publicClientApplication, scopes);

Benutzername/KennwortanbieterUsername/password provider

Der Benutzername/Kennwortanbieter ermöglicht einer Anwendung das Anmelden eines Benutzers mithilfe Ihres Benutzernamens und Kennworts.The username/password provider allows an application to sign in a user by using their username and password. Verwenden Sie diesen Fluss nur, wenn Sie keinen der anderen OAuth-Datenflüsse verwenden können.Use this flow only when you cannot use any of the other OAuth flows. Weitere Informationen finden Sie unter Microsoft Identity Platform und OAuth 2,0 Resource owner password CredentialFor more information, see Microsoft identity platform and the OAuth 2.0 resource owner password credential

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 SchritteNext steps