Migrowanie aplikacji systemu Android korzystających z brokera z ADAL.NET do MSAL.NET

Jeśli masz obecnie aplikację platformy Xamarin dla systemu Android korzystającą z biblioteki uwierzytelniania usługi Azure Active Directory dla platformy .NET (ADAL.NET) i brokera uwierzytelniania, nadszedł czas, aby przeprowadzić migrację do biblioteki Microsoft Authentication Library for .NET (MSAL.NET).

Wymagania wstępne

Krok 1. Włączanie brokera

Bieżący kod biblioteki ADAL:Odpowiednik biblioteki MSAL:
W ADAL.NET obsługa brokera jest włączona dla poszczególnych kontekstów uwierzytelniania.

Aby wywołać brokera, musisz ustawić useBrokerwartość true w konstruktorze PlatformParameters :

public PlatformParameters(
        Activity callerActivity,
        bool useBroker)

W kodzie renderowania strony specyficznej dla platformy dla systemu Android należy ustawić flagę useBroker na true:

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

Następnie uwzględnij parametry w wywołaniu tokenu uzyskiwania:

AuthenticationResult result =
        await
            AuthContext.AcquireTokenAsync(
                Resource,
                ClientId,
                new Uri(RedirectURI),
                platformParameters)
                .ConfigureAwait(false);
W MSAL.NET obsługa brokera jest włączona dla poszczególnych parametrów PublicClientApplication.

Użyj parametru WithBroker() (który jest domyślnie ustawiony na wartość true), aby wywołać brokera:

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

Następnie w wywołaniu AcquireToken:

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

Krok 2. Ustawianie działania

W ADAL.NET przekazano działanie (zazwyczaj MainActivity) w ramach parametrów PlatformParameters, jak pokazano w kroku 1: Włączanie brokera.

MSAL.NET również używa działania, ale nie jest wymagane w regularnym użyciu systemu Android bez brokera. Aby użyć brokera, ustaw działanie, aby wysyłać i odbierać odpowiedzi od brokera.

Bieżący kod biblioteki ADAL:Odpowiednik biblioteki MSAL:
Działanie jest przekazywane do platformyParameters na platformie specyficznej dla systemu Android.
page.BrokerParameters = new PlatformParameters(
          this,
          true,
          PromptBehavior.SelectAccount);

W MSAL.NET wykonaj dwie czynności, aby ustawić działanie dla systemu Android:

  1. W MainActivity.cspliku ustaw App.RootViewController wartość MainActivity na , aby upewnić się, że istnieje działanie z wywołaniem brokera.

    Jeśli nie jest poprawnie ustawiona, może zostać wyświetlony następujący błąd: "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. W wywołaniu AcquireTokenInteractive użyj .WithParentActivityOrWindow(App.RootViewController) elementu i przekaż odwołanie do używanego działania. W tym przykładzie zostanie użyta funkcja MainActivity.

Przykład:

W App.cs:

   public static object RootViewController { get; set; }

W MainActivity.cs:

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

W wywołaniu AcquireToken:

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

Następne kroki

Aby uzyskać więcej informacji na temat zagadnień specyficznych dla systemu Android podczas korzystania z MSAL.NET z platformą Xamarin, zobacz Wymagania dotyczące konfiguracji i porady dotyczące rozwiązywania problemów dotyczące platformy Xamarin Dla systemu Android z MSAL.NET.