Migrieren von Android-Anwendungen, die einen Broker verwenden, von ADAL.NET zu MSAL.NET

Wenn Sie eine Xamarin Android-App besitzen, die derzeit die Azure Active Directory-Authentifizierungsbibliothek für .NET (ADAL.NET) und einen Authentifizierungsbroker nutzt, ist es an der Zeit, zur Microsoft-Authentifizierungsbibliothek für .NET (MSAL.NET) zu migrieren.

Voraussetzungen

Schritt 1: Aktivieren des Brokers

Aktueller ADAL-Code:MSAL-Entsprechung:
In ADAL.NET ist die Brokerunterstützung pro Authentifizierung aktiviert.

Sie mussten im PlatformParameters-Konstruktor useBroker auf true festlegen, um den Broker aufzurufen:

public PlatformParameters(
        Activity callerActivity,
        bool useBroker)

Im plattformspezifischen Seitenrenderercode für Android legen Sie das useBroker-Flag auf „true“ fest:

page.BrokerParameters = new PlatformParameters(
        this,
        true,
        PromptBehavior.SelectAccount);

Fügen Sie dann die Parameter in den Aufruf zum Abrufen eines Tokens (AcquireToken-Aufruf) ein:

AuthenticationResult result =
        await
            AuthContext.AcquireTokenAsync(
                Resource,
                ClientId,
                new Uri(RedirectURI),
                platformParameters)
                .ConfigureAwait(false);
In MSAL.NET wird die Brokerunterstützung wird pro PublicClientApplication aktiviert.

Verwenden Sie den Parameter WithBroker() (standardmäßig auf „true“ festgelegt), um den Broker aufzurufen:

var app = PublicClientApplicationBuilder
                .Create(ClientId)
                .WithBroker()
                .WithRedirectUri(redirectUriOnAndroid)
                .Build();

Im AcquireToken-Aufruf:

result = await app.AcquireTokenInteractive(scopes)
             .WithParentActivityOrWindow(App.RootViewController)
             .ExecuteAsync();

Schritt 2: Festlegen einer Aktivität

In ADAL.NET haben Sie eine Aktivität (in der Regel „MainActivity“) als Teil von „PlatformParameters“ übergeben, wie in Schritt 1: Aktivieren des Brokers gezeigt.

MSAL.NET verwendet auch eine Aktivität, sie ist jedoch nicht für die reguläre Android-Verwendung ohne Broker erforderlich. Damit Sie den Broker verwenden können, legen Sie die Aktivität zum Senden und Empfangen von Antworten vom Broker fest.

Aktueller ADAL-Code:MSAL-Entsprechung:
Die Aktivität wird an „PlatformParameters“ auf der Android-spezifischen Plattform übergeben.
page.BrokerParameters = new PlatformParameters(
          this,
          true,
          PromptBehavior.SelectAccount);

In MSAL.NET führen Sie zwei Schritte aus, um die Aktivität für Android festzulegen:

  1. Legen Sie in MainActivity.cs das App.RootViewController-Element auf MainActivity fest, um sicherzustellen, dass eine Aktivität mit dem Aufruf des Brokers vorhanden ist.

    Wird das Element nicht ordnungsgemäß festgelegt wurde, erhalten Sie möglicherweise den folgenden Fehler: "Activity_required_for_android_broker":"Activity is null, so MSAL.NET cannot invoke the Android broker. See https://aka.ms/Brokered-Authentication-for-Android".

  2. Verwenden Sie im AcquireTokenInteractive-Aufruf .WithParentActivityOrWindow(App.RootViewController), und übergeben Sie den Verweis an die Aktivität, die Sie verwenden. In diesem Beispiel wird „MainActivity“ verwendet.

Beispiel:

In App.cs:

   public static object RootViewController { get; set; }

In MainActivity.cs:

   LoadApplication(new App());
   App.RootViewController = this;

Im AcquireToken-Aufruf:

result = await app.AcquireTokenInteractive(scopes)
             .WithParentActivityOrWindow(App.RootViewController)
             .ExecuteAsync();

Nächste Schritte

Weitere Informationen zu Android-spezifischen Überlegungen bei der Verwendung von MSAL.NET mit Xamarin finden Sie unter Überlegungen zur Verwendung von Xamarin Android mit MSAL.NET.