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.
Demander le consentement préalable de l’utilisateur sur plusieurs ressources
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 étenduescustomer.read
etcustomer.write
https://mytenant.onmicrosoft.com/vendorapi
avec les étenduesvendor.read
etvendor.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.