Bagikan melalui


Memigrasikan aplikasi Android yang menggunakan broker dari ADAL.NET ke MSAL.NET

Jika Anda memiliki aplikasi Xamarin Android yang saat ini menggunakan Azure Active Directory Authentication Library untuk .NET (ADAL.NET) dan broker autentikasi, saatnya untuk bermigrasi ke Microsoft Authentication Library untuk .NET (MSAL.NET).

Prasyarat

Catatan

MSAL.NET versi 4.61.0 ke atas tidak memberikan dukungan untuk Platform Windows Universal (UWP), Xamarin Android, dan Xamarin iOS. Sebaiknya migrasikan aplikasi Xamarin Anda ke kerangka kerja modern seperti MAUI. Baca selengkapnya tentang penghentian dalam Mengumumkan Penghentian MSAL.NET mendatang untuk Xamarin dan UWP.

Langkah 1: Aktifkan broker

Kode ADAL saat ini:Rekanan MSAL:
Selain ADAL.NET, dukungan broker diaktifkan berdasarkan konteks per autentikasi.

Untuk memanggil broker, Anda harus menetapkan useBroker ke true di konstruktor PlatformParameters:

public PlatformParameters(
        Activity callerActivity,
        bool useBroker)

Di kode penyaji halaman khusus platform untuk Android, Anda mengatur bendera useBroker ke true:

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

Lalu, sertakan parameter dalam mendapatkan panggilan token:

AuthenticationResult result =
        await
            AuthContext.AcquireTokenAsync(
                Resource,
                ClientId,
                new Uri(RedirectURI),
                platformParameters)
                .ConfigureAwait(false);
Di MSAL.NET, dukungan broker diaktifkan berdasarkan per-PublicClientApplication.

Gunakan parameter WithBroker() (yang diatur ke true secara default) untuk memanggil broker:

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

Lalu, dalam panggilan AcquireToken:

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

Langkah 2: Mengatur Aktivitas

Di ADAL.NET, Anda diluluskan dalam aktivitas (biasanya MainActivity) sebagai bagian dari PlatformParameters seperti yang ditunjukkan dalam Langkah 1: Aktifkan broker.

MSAL.NET juga menggunakan aktivitas, tetapi tidak diperlukan dalam penggunaan Android biasa tanpa broker. Untuk menggunakan broker, atur aktivitas untuk mengirim dan menerima respons dari broker.

Kode ADAL saat ini:Rekanan MSAL:
Aktivitas diluluskan ke PlatformParameters di platform khusus Android.
page.BrokerParameters = new PlatformParameters(
          this,
          true,
          PromptBehavior.SelectAccount);

Selain MSAL.NET, lakukan dua hal untuk mengatur aktivitas untuk Android:

  1. Di MainActivity.cs, atur App.RootViewController ke MainActivity untuk memastikan ada aktivitas dengan panggilan ke broker.

    Jika tidak diatur dengan benar, Anda mungkin mendapatkan kesalahan ini: "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. Pada panggilan AcquireTokenInteractive, gunakan .WithParentActivityOrWindow(App.RootViewController) dan teruskan referensi ke aktivitas yang akan Anda gunakan. Contoh ini menggunakan MainActivity.

Misalnya:

Di App.cs:

   public static object RootViewController { get; set; }

Di MainActivity.cs:

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

Dalam panggilan AcquireToken:

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

Langkah berikutnya

Untuk informasi selengkapnya tentang pertimbangan khusus Android saat menggunakan MSAL.NET dengan Xamarin, lihat Persyaratan konfigurasi dan tips pemecahan masalah untuk Xamarin Android dengan MSAL.NET.