Application de bureau qui appelle des API Web : Passer en production

Dans cet article, vous allez apprendre à déplacer votre application de bureau qui appelle des API Web en production.

Gérer les erreurs dans les applications de bureau

Dans les différents flux, vous avez appris à gérer les erreurs pour les flux en mode silencieux, comme indiqué dans les extraits de code. Vous avez également vu qu’il existe des cas où l’interaction est nécessaire, comme le consentement incrémentiel et l’accès conditionnel.

Notes

L’obtention d’un consentement pour plusieurs ressources fonctionne pour la plateforme d’identités Microsoft, mais pas pour Azure Active Directory (Azure AD) B2C. Azure AD B2C prend en charge le consentement de l’administrateur uniquement, et pas le consentement de l’utilisateur.

Vous ne pouvez pas obtenir un jeton pour plusieurs ressources à la fois avec la plateforme d’identités Microsoft. Le paramètre scopes peut contenir des étendues pour une seule ressource. Vous pouvez veiller à ce que l’utilisateur consente d’avance plusieurs ressources via le paramètre extraScopesToConsent.

Par exemple, si vous avez deux ressources, ayant chacune deux étendues :

  • https://mytenant.onmicrosoft.com/customerapi avec les étendues customer.read et customer.write
  • https://mytenant.onmicrosoft.com/vendorapi avec les étendues vendor.read et vendor.write

Dans cet exemple, utilisez le modificateur .WithExtraScopesToConsent qui dispose du paramètre extraScopesToConsent.

Exemple :

Dans MSAL.NET

string[] scopesForCustomerApi = new string[]
{
  "https://mytenant.onmicrosoft.com/customerapi/customer.read",
  "https://mytenant.onmicrosoft.com/customerapi/customer.write"
};
string[] scopesForVendorApi = new string[]
{
 "https://mytenant.onmicrosoft.com/vendorapi/vendor.read",
 "https://mytenant.onmicrosoft.com/vendorapi/vendor.write"
};

var accounts = await app.GetAccountsAsync();
var result = await app.AcquireTokenInteractive(scopesForCustomerApi)
                     .WithAccount(accounts.FirstOrDefault())
                     .WithExtraScopesToConsent(scopesForVendorApi)
                     .ExecuteAsync();

Dans MSAL pour iOS et macOS

Objective-C :

NSArray *scopesForCustomerApi = @[@"https://mytenant.onmicrosoft.com/customerapi/customer.read",
                                @"https://mytenant.onmicrosoft.com/customerapi/customer.write"];

NSArray *scopesForVendorApi = @[@"https://mytenant.onmicrosoft.com/vendorapi/vendor.read",
                              @"https://mytenant.onmicrosoft.com/vendorapi/vendor.write"]

MSALInteractiveTokenParameters *interactiveParams = [[MSALInteractiveTokenParameters alloc] initWithScopes:scopesForCustomerApi webviewParameters:[MSALWebviewParameters new]];
interactiveParams.extraScopesToConsent = scopesForVendorApi;
[application acquireTokenWithParameters:interactiveParams completionBlock:^(MSALResult *result, NSError *error) { /* handle result */ }];

Swift :

let scopesForCustomerApi = ["https://mytenant.onmicrosoft.com/customerapi/customer.read",
                            "https://mytenant.onmicrosoft.com/customerapi/customer.write"]

let scopesForVendorApi = ["https://mytenant.onmicrosoft.com/vendorapi/vendor.read",
                          "https://mytenant.onmicrosoft.com/vendorapi/vendor.write"]

let interactiveParameters = MSALInteractiveTokenParameters(scopes: scopesForCustomerApi, webviewParameters: MSALWebviewParameters())
interactiveParameters.extraScopesToConsent = scopesForVendorApi
application.acquireToken(with: interactiveParameters, completionBlock: { (result, error) in /* handle result */ })

Cet appel vous permet d’obtenir un jeton d’accès pour la première API Web.

Lors de l’appel de la deuxième API web, appelez l’API AcquireTokenSilent.

AcquireTokenSilent(scopesForVendorApi, accounts.FirstOrDefault()).ExecuteAsync();

Le compte personnel Microsoft requiert de nouveau un consentement à chaque exécution de l’application

Pour les utilisateurs de compte personnel Microsoft, il convient de demander de nouveau le consentement sur chaque client natif (ordinateur de bureau ou application mobile) pour autoriser est le comportement prévu. L’identité de client natif est fondamentalement non sécurisée, ce qui est contraire à l’identité de l’application cliente confidentielle. Les applications clientes confidentielles échangent un secret avec la plateforme d’identité Microsoft pour prouver leur identité. La plateforme d’identité Microsoft a choisi d’atténuer ce manque de sécurité pour les services aux consommateur en invitant l’utilisateur à donner son consentement à chaque fois que l’application est autorisée.

Activation de la journalisation

Pour faciliter le débogage et les scénarios de résolution des problèmes d’authentification, la bibliothèque d’authentification Microsoft offre une prise en charge intégrée de la journalisation. La journalisation dans chaque bibliothèque est couverte dans les articles suivants :

Voici quelques suggestions pour la collecte de données :

  • Les utilisateurs peuvent demander de l’aide lorsqu’ils rencontrent des problèmes. Une meilleure pratique consiste à capturer et à stocker temporairement les journaux. Indiquez un emplacement où les utilisateurs peuvent charger les journaux. MSAL fournit des extensions de journalisation permettant de capturer des informations détaillées sur l’authentification.

  • Si une télémétrie est disponible, activez-la via MSAL pour recueillir des données sur la façon dont les utilisateurs se connectent à votre application.

Valider votre intégration

Testez votre intégration en suivant la check-list de l’intégration à la plateforme d’identités Microsoft.

Créer pour la résilience

Découvrez comment augmenter la résilience dans votre application. Pour plus de détails, consultez Augmenter la résilience des applications d’authentification et d’autorisation que vous développez

Étapes suivantes

Pour essayer des exemples supplémentaires, voir Applications clientes publiques de bureau.