Migrace aplikací pro Android, které používají zprostředkovatele z ADAL.NET, do MSAL.NET

Pokud máte aplikaci Xamarin Android, která aktuálně používá knihovnu Azure Active Directory Authentication Library pro .NET (ADAL.NET) a zprostředkovatele ověřování, je čas migrovat do knihovny Microsoft Authentication Library pro .NET (MSAL.NET).

Požadavky

Krok 1: Povolení zprostředkovatele

Aktuální kód ADAL:Protějšek MSAL:
V ADAL.NET je podpora zprostředkovatele povolená na základě kontextu ověřování.

Abyste mohli volat zprostředkovatele, museli jste v konstruktoru PlatformParameters nastavit useBroker hodnotu true:

public PlatformParameters(
        Activity callerActivity,
        bool useBroker)

V kódu vykreslovacího modulu stránky specifické pro platformu pro Android nastavíte useBroker příznak na true:

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

Pak do volání tokenu získání zahrňte parametry:

AuthenticationResult result =
        await
            AuthContext.AcquireTokenAsync(
                Resource,
                ClientId,
                new Uri(RedirectURI),
                platformParameters)
                .ConfigureAwait(false);
V MSAL.NET je podpora zprostředkovatele povolená pro jednotlivé verze PublicClientApplication.

WithBroker() K volání zprostředkovatele použijte parametr (který je ve výchozím nastavení nastavený na true):

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

Pak ve volání AcquireToken:

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

Krok 2: Nastavení aktivity

V ADAL.NET jste předali aktivitu (obvykle MainActivity) jako součást platformParameters, jak je znázorněno v kroku 1: Povolení zprostředkovatele.

MSAL.NET také používá aktivitu, ale nevyžaduje se v běžném používání Androidu bez zprostředkovatele. Pokud chcete použít zprostředkovatele, nastavte aktivitu tak, aby od zprostředkovatele odesílala a přijímala odpovědi.

Aktuální kód ADAL:Protějšek MSAL:
Aktivita se předává platforměParameters na platformě specifické pro Android.
page.BrokerParameters = new PlatformParameters(
          this,
          true,
          PromptBehavior.SelectAccount);

V MSAL.NET nastavte aktivitu pro Android dvěma způsoby:

  1. Nastavte MainActivity.csna hodnotu App.RootViewController tak MainActivity , aby se zajistila aktivita s voláním zprostředkovatele.

    Pokud není správně nastavená, může se zobrazit tato chyba: "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. Při volání AcquireTokenInteractive použijte .WithParentActivityOrWindow(App.RootViewController) odkaz na aktivitu, kterou použijete, a předejte ho. V tomto příkladu se použije MainActivity.

Příklad:

V App.cs:

   public static object RootViewController { get; set; }

V MainActivity.cs:

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

Ve volání AcquireToken:

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

Další kroky

Další informace o aspektech specifických pro Android při použití MSAL.NET s Xamarinem najdete v tématu Požadavky na konfiguraci a tipy pro řešení potíží pro Xamarin Android s MSAL.NET.