Choisir un fournisseur d’authentification Microsoft Graph en fonction du scénarioChoose a Microsoft Graph authentication provider based on scenario

Les fournisseurs d’authentification implémentent le code requis pour acquérir un jeton à l’aide de la bibliothèque d’authentification Microsoft (MSAL); gérer un certain nombre d’erreurs potentielles pour des cas comme le consentement incrémentiel, les mots de passe expirés et l’accès conditionnel ; puis définissez l’en-tête d’autorisation de demande HTTP.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. Le tableau suivant répertorie l’ensemble des fournisseurs qui correspondent aux scénarios pour les différents types d’application.The following table lists the set of providers that match the scenarios for different application types.

ScénarioScenario Flux/octroiFlow/Grant AudienceAudience FournisseurProvider
Application à page uniqueSingle Page App
ImpliciteImplicit Client/org déléguéDelegated Consumer/Org Fournisseur impliciteImplicit Provider
Application Web qui appelle des API WebWeb App that calls web APIs
Code d’autorisationAuthorization Code Client/org déléguéDelegated Consumer/Org Fournisseur de code d’autorisationAuthorization Code Provider
Informations d’identification du clientClient Credentials Application uniquementApp Only Fournisseur d’informations d’identification du clientClient Credentials Provider
API Web qui appelle des API WebWeb API that calls web APIs
De la part deOn Behalf Of Client/org déléguéDelegated Consumer/Org De la part du fournisseurOn Behalf Of Provider
Informations d’identification du clientClient Credentials Application uniquementApp Only Fournisseur d’informations d’identification du clientClient Credentials Provider
Application de bureau qui appelle des API WebDesktop app that calls web APIs
InteractivesInteractive Client/org déléguéDelegated Consumer/Org Fournisseur interactifInteractive Provider
Windows intégréIntegrated Windows Org déléguéeDelegated Org Fournisseur Windows intégréIntegrated Windows Provider
Propriétaire de la ressourceResource Owner Org déléguéeDelegated Org Nom d’utilisateur/mot de passeUsername / Password Provider
Code du périphériqueDevice Code Org déléguéeDelegated Org Fournisseur de code de périphériqueDevice Code Provider
App daemonDaemon app
Informations d’identification du clientClient Credentials Application uniquementApp Only Fournisseur d’informations d’identification du clientClient Credentials Provider
Application mobile qui appelle des API WebMobile app that calls web APIs
InteractivesInteractive Client/org déléguéDelegated Consumer/Org Fournisseur interactifInteractive Provider

Fournisseur de code d’autorisationAuthorization code provider

Le flux de code d’autorisation permet aux applications natives et Web d’obtenir en toute sécurité des jetons dans le nom de l’utilisateur.The authorization code flow enables native and web apps to securely obtain tokens in the name of the user. Pour plus d’informations, consultez la rubrique Microsoft Identity Platform and OAuth 2,0 Authorization Flow code.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);

Fournisseur d’informations d’identification du clientClient credentials provider

Le flux des informations d’identification du client permet aux applications de service de s’exécuter sans intervention de l’utilisateur.The client credential flow enables service applications to run without user interaction. L’accès est basé sur l’identité de l’application.Access is based on the identity of the application. Pour plus d’informations, consultez la rubrique Microsoft Identity Platform et le flux d’informations d’identification du client OAuth 2,0.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);

Fournisseur de la part deOn-behalf-of provider

Le flux de la part de est applicable lorsque votre application appelle une API service/Web qui appelle l’API Microsoft Graph.The on-behalf-of flow is applicable when your application calls a service/web API which in turns calls the Microsoft Graph API. Pour plus d’informations, consultez la lecture de Microsoft Identity Platform and OAuth 2,0 on-ConflowLearn 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);

Fournisseur impliciteImplicit provider

Le flux d’octroi implicite est utilisé dans les applications basées sur un navigateur.The implicit grant flow is used in browser-based applications. Pour plus d’informations, consultez la rubrique Microsoft Identity Platform et le flux d’octroi implicite.For more information, see Microsoft identity platform and Implicit grant flow.

Non applicableNot applicable.

Fournisseur de code de périphériqueDevice code provider

Le flux de code du périphérique permet de se connecter aux appareils par le biais d’un autre appareil.The device code flow enables sign in to devices by way of another device. Pour plus d’informations, consultez la rubrique Microsoft Identity Platform et le flux de code de périphérique OAuth 2,0.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);

Fournisseur Windows intégréIntegrated Windows provider

Le flux Windows intégré permet aux ordinateurs Windows d’acquérir en silence un jeton d’accès lorsqu’ils sont associés à un domaine.The integrated Windows flow provides a way for Windows computers to silently acquire an access token when they are domain joined. Pour plus d’informations, consultez la rubrique authentification Windows intégrée.For details, see Integrated Windows authentication.

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

IntegratedWindowsAuthenticationProvider authProvider = new IntegratedWindowsAuthenticationProvider(publicClientApplication, scopes);

Fournisseur interactifInteractive provider

Le flux interactif est utilisé par les applications mobiles (Xamarin et UWP) et les applications de bureau pour appeler Microsoft Graph au nom d’un utilisateur.The interactive flow is used by mobile applications (Xamarin and UWP) and desktops applications to call Microsoft Graph in the name of a user. Pour plus d’informations, consultez la rubrique acquisition de jetons de manière interactive.For details, see Acquiring tokens interactively.

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

InteractiveAuthenticationProvider authProvider = new InteractiveAuthenticationProvider(publicClientApplication, scopes);

Nom d’utilisateur/mot de passeUsername/password provider

Le fournisseur de nom d’utilisateur/mot de passe permet à une application de se connecter à un utilisateur en utilisant son nom d’utilisateur et son mot de passe.The username/password provider allows an application to sign in a user by using their username and password. Utilisez ce flux uniquement si vous ne pouvez pas utiliser les autres flux OAuth.Use this flow only when you cannot use any of the other OAuth flows. Pour plus d’informations, consultez la rubrique Microsoft Identity Platform et les informations d’identification du mot de passe du propriétaire de ressources OAuth 2,0For 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();

Étapes suivantesNext steps