Desktop-app die web-API's aanroept: verplaatsen naar productie

In dit artikel leert u hoe u uw bureaublad-app verplaatst die web-API's aanroept naar productie.

Fouten in bureaubladtoepassingen verwerken

In de verschillende stromen hebt u geleerd hoe u de fouten voor de stille stromen kunt afhandelen, zoals wordt weergegeven in de codefragmenten. U hebt ook gezien dat er gevallen zijn waarin interactie nodig is, zoals in incrementele toestemming en voorwaardelijke toegang.

Notitie

Het verkrijgen van toestemming voor verschillende resources werkt voor het Microsoft Identity Platform, maar niet voor Azure Active Directory (Azure AD) B2C. Azure AD B2C ondersteunt alleen beheerderstoestemming, niet gebruikerstoestemming.

U kunt geen token ophalen voor verschillende resources tegelijk met het Microsoft Identity Platform. De scopes parameter kan bereiken voor slechts één resource bevatten. U kunt ervoor zorgen dat de gebruiker vooraf toestemming verleent voor verschillende resources met behulp van de extraScopesToConsent parameter.

U hebt bijvoorbeeld twee resources met elk twee bereiken:

  • https://mytenant.onmicrosoft.com/customerapi met de bereiken customer.read en customer.write
  • https://mytenant.onmicrosoft.com/vendorapi met de bereiken vendor.read en vendor.write

In dit voorbeeld gebruikt u de .WithExtraScopesToConsent wijzigingsfunctie met de extraScopesToConsent parameter.

Bijvoorbeeld:

In 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();

In MSAL voor iOS en 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 */ })

Met deze aanroep krijgt u een toegangstoken voor de eerste web-API.

Wanneer u de tweede web-API aanroept, roept u de AcquireTokenSilent API aan.

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

Voor een persoonlijk Microsoft-account is reconsent vereist telkens wanneer de app wordt uitgevoerd

Voor gebruikers van een persoonlijk Microsoft-account is het beoogde gedrag om toestemming te geven voor elke systeemeigen clientaanroep (desktop- of mobiele app). Systeemeigen clientidentiteit is inherent onveilig, wat in strijd is met de identiteit van vertrouwelijke clienttoepassingen. Vertrouwelijke clienttoepassingen wisselen een geheim uit met het Microsoft Identity Platform om hun identiteit te bewijzen. Het Microsoft Identity Platform heeft ervoor gekozen om deze onzekerheid voor consumentenservices te beperken door de gebruiker te vragen om toestemming telkens wanneer de toepassing wordt geautoriseerd.

Logboekregistratie inschakelen

De Microsoft Authentication Library biedt ingebouwde ondersteuning voor logboekregistratie om fouten op te sporen en problemen met verificatiefouten op te lossen. De logboekregistratie in elke bibliotheek wordt behandeld in de volgende artikelen:

Hier volgen enkele suggesties voor het verzamelen van gegevens:

  • Gebruikers kunnen om hulp vragen wanneer ze problemen ondervinden. Een best practice is om logboeken vast te leggen en tijdelijk op te slaan. Geef een locatie op waar gebruikers de logboeken kunnen uploaden. MSAL biedt extensies voor logboekregistratie om gedetailleerde informatie over verificatie vast te leggen.

  • Als telemetrie beschikbaar is, schakelt u deze via MSAL in om gegevens te verzamelen over hoe gebruikers zich aanmelden bij uw app.

Uw integratie valideren

Test uw integratie door het volgen van de controlelijst voor integratie met het Microsoft Identity-platform.

Bouwen voor tolerantie

Meer informatie over het vergroten van de tolerantie in uw app. Zie voor meer informatie Tolerantie verhogen van verificatie- en autorisatietoepassingen die u ontwikkelt

Volgende stappen

Als u aanvullende voorbeelden wilt uitproberen, raadpleegt u openbare bureaubladclienttoepassingen.