Menggunakan browser web (MSAL.NET)

Menggunakan browser web (MSAL.NET)

Browser web diperlukan untuk autentikasi interaktif. Secara default, MSAL.NET mendukung browser web sistem di Xamarin.iOS dan Xamarin.Android. Tetapi Anda juga dapat mengaktifkan browser Web Tersematkan tergantung pada kebutuhan Anda (UX, kebutuhan untuk akses menyeluruh (SSO), keamanan) di Xamarin.iOS dan aplikasi Xamarin.Android. Dan Anda bahkan dapat memilih secara dinamis browser web mana yang akan digunakan berdasarkan keberadaan Chrome atau browser yang mendukung tab kustom Chrome di Android. MSAL.NET hanya mendukung browser sistem di aplikasi desktop .NET Core.

Browser web di MSAL.NET

Interaksi terjadi di browser Web

Penting untuk dipahami bahwa ketika memperoleh token secara interaktif, konten kotak dialog tidak disediakan oleh perpustakaan tetapi oleh STS (Layanan Token Keamanan). Titik akhir autentikasi mengirim kembali beberapa HTML dan JavaScript yang mengontrol interaksi, yang dirender di browser web atau kontrol web. Memungkinkan STS untuk menangani interaksi HTML memiliki banyak keuntungan:

  • Kata sandi (jika salah satu diketik) tidak pernah disimpan oleh aplikasi, atau pustaka autentikasi.
  • Memungkinkan pengalihan ke penyedia identitas lain (misalnya login dengan akun sekolah kerja atau akun pribadi dengan MSAL, atau dengan akun sosial dengan Microsoft Azure AD B2C).
  • Memungkinkan STS mengontrol Akses Bersyarat, misalnya, dengan meminta pengguna melakukan autentikasi multifaktor (MFA) selama fase autentikasi (memasukkan pin Windows Hello, atau dipanggil di ponsel mereka, atau pada aplikasi autentikasi di ponsel mereka). Dalam kasus di mana autentikasi multifaktor yang diperlukan belum menyiapkannya, pengguna dapat mengaturnya tepat pada waktunya dalam dialog yang sama. Pengguna memasukkan nomor ponsel mereka dan dipandu untuk menginstal aplikasi autentikasi dan memindai tag QR untuk menambahkan akun mereka. Interaksi yang digerakkan oleh server ini adalah pengalaman hebat!
  • Memungkinkan pengguna mengubah kata sandi mereka dalam dialog yang sama ini ketika kata sandi telah kedaluwarsa (menyediakan bidang tambahan untuk kata sandi lama dan kata sandi baru).
  • Mengaktifkan pencitraan penyewa, atau aplikasi (gambar) yang dikendalikan oleh admin penyewa Microsoft Azure AD / pemilik aplikasi.
  • Memungkinkan pengguna untuk menyetujui untuk membiarkan aplikasi mengakses sumber daya/cakupan dalam nama mereka tepat setelah autentikasi.

UI Web Tertanam vs Sistem

MSAL.NET adalah pustaka multi-kerangka dan memiliki kode kerangka kerja khusus untuk meng-host browser di kontrol UI (misalnya, di .NET Classic menggunakan WinForms, di .NET 5.0+ menggunakan WebView2, di Xamarin menggunakan ponsel asli kontrol dll). Kontrol ini disebut embedded UI web. Atau, MSAL.NET ini juga dapat memulai browser OS sistem.

Umumnya, disarankan agar Anda menggunakan default platform, dan ini biasanya browser sistem. Browser sistem lebih baik mengingat pengguna yang telah masuk sebelumnya. Untuk mengubah perilaku ini, gunakan WithUseEmbeddedWebView(bool)

Sekilas

Kerangka Kerja Tersematkan Sistem Default
.NET 5.0+ Ya† Ya^ Tersematkan
.NET Klasik Ya Ya^ Tersematkan
.NET Core Tidak Ya^ Sistem
.NET Standar Tidak Ya^ Sistem
UWP Ya Tidak Tersematkan
Xamarin.Android Ya Ya Sistem
Xamarin.iOS Ya Ya Sistem
Xamarin.Mac Ya Tidak Tersematkan

Memerlukan moniker bingkai target spesifik OS (TFM) setidaknya net5.0-windows10.0.17763.0 . Jangan tidak menggunakan net5.0 atau net5.0-windows TFM. Untuk informasi selengkapnya tentang TFM, lihat Kerangka kerja target dalam proyek bergaya SDK.

^ Memerlukan URI pengalihan http://localhost

Browser web sistem di Xamarin.iOS, Xamarin.Android

Secara default, MSAL.NET mendukung browser web sistem di Xamarin.iOS, Xamarin.Android dan .NET Core. Untuk semua platform yang menyediakan UI (yaitu, bukan .NET Core), dialog disediakan oleh pustaka yang menyematkan kontrol browser Web. MSAL.NET juga menggunakan tampilan web tertanam untuk Desktop .NET dan WAB untuk platform UWP. Namun, ia memanfaatkan secara default browser web sistem untuk aplikasi Xamarin iOS dan Xamarin Android. Di iOS, ia bahkan memilih tampilan web untuk digunakan tergantung pada versi Sistem Operasi (iOS12, iOS11, dan yang lebih lama).

Menggunakan browser sistem memiliki keuntungan signifikan dari berbagi status SSO dengan aplikasi lain dan dengan aplikasi web tanpa memerlukan broker (Portal perusahaan / Authenticator). Browser sistem digunakan, secara default, di MSAL.NET untuk platform Android Xamarin iOS dan Xamarin karena, pada platform ini, browser web sistem menempati seluruh layar, dan pengalaman pengguna lebih baik. Tampilan web sistem tidak dapat dibedakan dari dialog. Namun, di iOS, pengguna mungkin harus memberikan persetujuan bagi browser untuk memanggil kembali aplikasi, yang dapat mengganggu.

Pengalaman browser sistem di .NET

Pada .NET Core, MSAL.NET akan memulai browser sistem sebagai proses terpisah. MSAL.NET tidak memiliki kontrol atas browser ini, tetapi begitu pengguna menyelesaikan autentikasi, halaman web dialihkan sedemikian rupa sehingga MSAL.NET dapat mencegat URI.

Anda juga dapat mengonfigurasi aplikasi yang ditulis untuk .NET Classic atau .NET 5 untuk menggunakan browser ini dengan menentukan:

MSAL.NET tidak dapat mendeteksi apakah pengguna menavigasi pergi atau hanya menutup browser. Aplikasi yang menggunakan teknik ini didorong untuk menentukan waktu habis (melalui CancellationToken ). Kami merekomendasikan batas waktu setidaknya beberapa menit, untuk memperhitungkan kasus akun saat pengguna diminta untuk mengubah kata sandi atau melakukan autentikasi multifaktor.

Cara menggunakan Browser OS Default

MSAL.NET anda perlu mendengarkan http://localhost:port dan mencegat kode yang dikirim AAD ketika pengguna selesai mengautentikasi (Lihat kode Otorisasi untuk detailnya)

Untuk mengaktifkan penjelajah sistem:

  1. Selama pendaftaran aplikasi, konfigurasikan http://localhost sebagai URI pengalihan (saat ini tidak didukung oleh B2C)
  2. Saat Anda membangun PublicClientApplication Anda, tentukan URI pengalihan ini:

Jika Anda mengonfigurasi http://localhost , secara internal MSAL.NET Anda akan menemukan port terbuka acak dan menggunakannya.

Linux dan macOS

Di Linux, MSAL.NET membuka browser OS default dengan alat seperti xdg-open. Membuka browser dengan sudo tidak didukung oleh MSAL dan akan menyebabkan MSAL untuk melemparkan pengecualian.

Di macOS, browser dibuka dengan memanggil open .

Mengkustomisasi pengalaman

MSAL.NET dapat merespons dengan pesan HTTP atau pengalihan HTTP saat token diterima atau terjadi kesalahan.

Membuka browser tertentu (Eksperimental)

Anda dapat menyesuaikan cara MSAL.NET membuka browser. Misalnya alih-alih menggunakan browser apa pun adalah default, Anda dapat membuka browser tertentu secara paksa:

UWP tidak menggunakan Webview Sistem

Namun, untuk aplikasi desktop, meluncurkan Webview Sistem mengarah ke pengalaman pengguna subpar, karena pengguna melihat browser, di mana mereka mungkin sudah membuka tab lain. Dan ketika autentikasi telah terjadi, pengguna mendapatkan halaman yang meminta mereka untuk menutup jendela ini. Jika pengguna tidak memperhatikan, mereka dapat menutup seluruh proses (termasuk tab lain, yang tidak terkait dengan autentikasi). Memanfaatkan browser sistem di desktop juga akan memerlukan pembukaan port lokal dan mendengarkannya, yang mungkin memerlukan izin tingkat lanjut untuk aplikasi. Anda, sebagai pengembang, pengguna, atau administrator, mungkin enggan tentang persyaratan ini.

Mengaktifkan tampilan web yang disematkan di iOS dan Android

Anda juga dapat mengaktifkan tampilan web yang disematkan di aplikasi Xamarin.iOS dan Xamarin.Android. Dimulai dengan MSAL.NET 2.0.0-preview, MSAL.NET juga mendukung menggunakan opsi webview yang disematkan.

Sebagai pengembang yang menggunakan MSAL.NET menargetkan Xamarin, Anda dapat memilih untuk menggunakan webview atau browser sistem yang disematkan. Ini adalah pilihan Anda tergantung pada pengalaman pengguna dan masalah keamanan yang ingin Anda targetkan.

Saat ini, MSAL.NET belum mendukung broker Android dan iOS. Oleh karena itu untuk menyediakan single sign-on (SSO), browser sistem mungkin masih menjadi pilihan yang lebih baik. Broker pendukung dengan browser web tertanam ada di MSAL.NET backlog.

Perbedaan antara tampilan web dan browser sistem yang disematkan

Ada beberapa perbedaan visual antara webview tertanam dan browser sistem di MSAL.NET.

Masuk interaktif dengan MSAL.NET yang menggunakan Tampilan Web Tersemat:

embedded

Masuk interaktif dengan MSAL.NET yang menggunakan Browser Sistem:

System browser

Opsi Pengembang

Sebagai pengembang yang menggunakan MSAL.NET, Anda memiliki beberapa opsi untuk menampilkan dialog interaktif dari STS:

Browser sistem. Browser sistem diatur secara default di pustaka. Jika menggunakan Android, baca browser sistem untuk informasi spesifik tentang browser mana yang didukung untuk autentikasi. Saat menggunakan browser sistem di Android, kami menyarankan perangkat memiliki browser yang mendukung tab kustom Chrome. Jika tidak, autentikasi mungkin gagal.

Tampilan web yang disematkan. Untuk hanya menggunakan tampilan web tersemat dalam MSAL.NET, AcquireTokenInteractively penyusun parameter berisi WithUseEmbeddedWebView() metode x.

Memilih antara browser web atau browser sistem yang disematkan di Xamarin.iOS

Di aplikasi iOS, di AppDelegate.cs Anda dapat menginisialisasi ParentWindow ke null . Ini tidak digunakan di iOS

Memilih antara browser web atau browser sistem yang disematkan di Xamarin.Android

Di aplikasi Android, di MainActivity.cs Anda dapat mengatur aktivitas induk, sehingga hasil autentikasi kembali ke sana:

Kemudian di MainPage.xaml.cs :

Mendeteksi keberadaan tab kustom di Xamarin.Android

Jika Anda ingin menggunakan browser web sistem untuk mengaktifkan SSO dengan aplikasi yang berjalan di browser, tetapi khawatir tentang pengalaman pengguna untuk perangkat Android yang tidak memiliki browser dengan dukungan tab kustom, Anda memiliki opsi untuk memutuskan dengan memanggil metode IsSystemWebViewAvailable() dalam IPublicClientApplication . Metode ini menghasilkan true jika PackageManager mendeteksi tab kustom dan false jika tidak terdeteksi di perangkat.

Berdasarkan nilai yang dihasilkan oleh metode ini, dan kebutuhan Anda, Anda dapat membuat keputusan:

  • Anda dapat menghasilkan pesan kesalahan kustom untuk pengguna. Misalnya: "Harap instal Chrome untuk melanjutkan dengan autentikasi" -ATAU-
  • Anda dapat kembali ke opsi tampilan web yang disematkan dan meluncurkan UI sebagai tampilan web yang disematkan.

Kode di bawah ini memperlihatkan opsi tampilan web yang disematkan:

.NET Core tidak mendukung autentikasi interaktif dengan browser yang disematkan

Untuk .NET Core, akuisisi token secara interaktif hanya tersedia melalui browser web sistem, bukan dengan tampilan web yang disematkan. Memang, .NET Core belum menyediakan UI. Jika Anda ingin melakukan kustomisasi pengalaman browsing dengan browser web sistem, Anda dapat menerapkan antarmuka IWithCustomUI dan bahkan menyediakan browser Anda sendiri.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *