Eseguire la migrazione di applicazioni Android che usano un broker da ADAL.NET a MSAL.NET

Se si dispone di un'app Xamarin Android che usa attualmente Azure Active Directory Authentication Library per .NET (ADAL.NET) e un broker di autenticazione, è possibile eseguire la migrazione a Microsoft Authentication Library per .NET (MSAL.NET).

Prerequisiti

Passaggio 1: Abilitare il broker

Codice ADAL corrente:Controparte di MSAL:
In ADAL.NET, il supporto del broker è abilitato in base al contesto di autenticazione.

Per chiamare il broker, è necessario impostare su useBrokertrue nel PlatformParameters costruttore:

public PlatformParameters(
        Activity callerActivity,
        bool useBroker)

Nel codice del renderer di pagina specifico della piattaforma per Android impostare il useBroker flag su true:

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

Includere quindi i parametri nella chiamata al token di acquisizione:

AuthenticationResult result =
        await
            AuthContext.AcquireTokenAsync(
                Resource,
                ClientId,
                new Uri(RedirectURI),
                platformParameters)
                .ConfigureAwait(false);
In MSAL.NET, il supporto broker è abilitato per ogni publicClientApplication.

Usare il WithBroker() parametro (impostato su true per impostazione predefinita) per chiamare broker:

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

Quindi, nella chiamata AcquireToken:

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

Passaggio 2: Impostare un'attività

In ADAL.NET è stata passata un'attività (in genere MainActivity) come parte di PlatformParameters, come illustrato nel passaggio 1: Abilitare il broker.

MSAL.NET usa anche un'attività, ma non è necessaria nell'utilizzo regolare di Android senza un broker. Per usare il broker, impostare l'attività per inviare e ricevere risposte dal broker.

Codice ADAL corrente:Controparte di MSAL:
L'attività viene passata in PlatformParameters nella piattaforma specifica di Android.
page.BrokerParameters = new PlatformParameters(
          this,
          true,
          PromptBehavior.SelectAccount);

In MSAL.NET eseguire due operazioni per impostare l'attività per Android:

  1. In MainActivity.csimpostare su App.RootViewControllerMainActivity per assicurarsi che sia presente un'attività con la chiamata al broker.

    Se non è impostata correttamente, è possibile che venga visualizzato questo errore: "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. Nella chiamata AcquireTokenInteractive usare .WithParentActivityOrWindow(App.RootViewController) e passare il riferimento all'attività che verrà usata. Questo esempio userà MainActivity.

Ad esempio:

In App.cs:

   public static object RootViewController { get; set; }

In MainActivity.cs:

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

Nella chiamata AcquireToken:

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

Passaggi successivi

Per altre informazioni sulle considerazioni specifiche di Android quando si usa MSAL.NET con Xamarin, vedere Requisiti di configurazione e suggerimenti per la risoluzione dei problemi per Xamarin Android con MSAL.NET.