Desktop-App, die Web-APIs aufruft: Überführen in die Produktion

Dieser Artikel enthält Details zum Überführen Ihrer Desktop-App, die Web-APIs aufruft, in die Produktion.

Behandeln von Fehlern in Desktopanwendungen

Sie haben anhand der unterschiedlichen Flows und Codeausschnitte gelernt, wie Sie Fehler für automatisch ausgeführte Flows behandeln. Außerdem haben Sie erfahren, dass in bestimmten Fällen eine Interaktion erforderlich ist, wie bei der inkrementellen Einwilligung und beim bedingten Zugriff.

Hinweis

Das Einholen der Einwilligung für mehrere Ressourcen ist mit Microsoft Identity Platform, nicht aber mit Azure Active Directory B2C (Azure AD) möglich. Azure AD B2C unterstützt nur die Administrator- und nicht die Benutzereinwilligung.

Sie können über den Endpunkt von Microsoft Identity Platform kein Token für mehrere Ressourcen gleichzeitig abrufen. Der Parameter scopes kann nur Bereiche für eine einzelne Ressource enthalten. Mit dem Parameter extraScopesToConsent können Sie sicherstellen, dass der Benutzer vorab seine Einwilligung zu mehreren Ressourcen erteilt.

Angenommen, Sie verfügen über zwei Ressourcen mit jeweils zwei Bereichen:

  • https://mytenant.onmicrosoft.com/customerapi mit den Bereichen customer.read und customer.write
  • https://mytenant.onmicrosoft.com/vendorapi mit den Bereichen vendor.read und vendor.write

In diesem Fall sollten Sie den .WithExtraScopesToConsent-Modifizierer verwenden, der über den Parameter extraScopesToConsent verfügt.

Beispiel:

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 für iOS und 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 */ })

Durch diesen Aufruf wird ein Zugriffstoken für die erste Web-API aufgerufen.

Rufen Sie beim Aufrufen der zweiten Web-API die API mit AcquireTokenSilent auf.

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

Persönliches Microsoft-Konto erfordert erneute Einwilligung bei jedem Ausführen der App

Für Benutzer eines persönlichen Microsoft-Kontos besteht das beabsichtigte Verhalten darin, bei jedem Aufruf des nativen Clients (Desktop oder mobile App) zur Autorisierung erneut eine Einwilligung einzuholen. Die Identität des nativen Clients ist im Gegensatz zur vertraulichen Identität der Clientanwendung grundsätzlich unsicher. Um ihre Identität nachzuweisen, tauschen vertrauliche Clientanwendungen ein Geheimnis mit Microsoft Identity aus. Microsoft Identity Platform schränkt dieses Sicherheitsrisiko für Verbraucherdienste ein, indem der Benutzer bei jeder Anwendungsautorisierung seine Einwilligung geben muss.

Aktivieren der Protokollierung

Zum Debuggen und für die Problembehandlung von Authentifizierungsfehlern stellt MSAL eine integrierte Unterstützung für die Protokollierung bereit. Die Protokollierung in den einzelnen Bibliotheken wird in den folgenden Artikeln behandelt:

Hier einige Vorschläge für Daten, deren Erfassung sich lohnen kann:

  • Benutzer bitten bei Problemen möglicherweise um Unterstützung. Eine bewährte Vorgehensweise besteht darin, Protokolle zu erfassen und temporär zu speichern. Geben Sie einen Speicherort an, an den Benutzer die Protokolle hochladen können. MSAL stellt Protokollierungserweiterungen zur Verfügung, mit denen sich detaillierte Authentifizierungsinformationen erfassen lassen.

  • Falls Telemetriedaten verfügbar sind, aktivieren Sie die Sammlung von Telemetriedaten mithilfe der MSAL, um zu ermitteln, wie sich Benutzer bei Ihrer App anmelden.

Überprüfen Ihrer Integration

Testen Sie Ihre Integration anhand der Checkliste für die Integration von Microsoft Identity Platform.

Erstellen resilienter Lösungen

Erfahren Sie, wie Sie die Resilienz in Ihrer App erhöhen. Details hierzu finden Sie unter Erhöhen der Resilienz bei der Authentifizierung und Autorisierung in von Ihnen entwickelten Anwendungen.

Nächste Schritte

Weitere Beispiele zum Testen finden Sie unter Öffentliche Desktopclient-Apps.