Mengaktifkan opsi autentikasi di aplikasi desktop WPF dengan menggunakan Azure AD B2C
Artikel ini menjelaskan cara untuk mengkustomisasi dan menyempurnakan pengalaman autentikasi Azure Active Directory B2C (Azure AD B2C) untuk aplikasi desktop Windows Presentation Foundation (WPF) Anda.
Sebelum Anda mulai, biasakan diri Anda dengan artikel Mengonfigurasi autentikasi dalam aplikasi desktop WPF sampel dengan menggunakan Azure AD B2C.
Prepopulasi nama rincian masuk
Selama perjalanan pengguna masuk, aplikasi Anda mungkin menargetkan pengguna tertentu. Saat aplikasi menargetkan pengguna, aplikasi dapat menentukan permintaan otorisasi login_hint
parameter kueri dengan nama rincian masuk pengguna. Azure Active Directory B2C secara otomatis mengisi nama rincian masuk, dan pengguna hanya perlu memberikan kata sandi.
Untuk mengisi nama rincian masuk terlebih dahulu, lakukan hal berikut:
- Jika Anda menggunakan kebijakan kustom, tambahkan klaim input yang diperlukan, seperti yang dijelaskan dalam Menyiapkan masuk langsung.
- Cari objek konfigurasi Microsoft Authentication Library (MSAL) Anda, lalu tambahkan metode
withLoginHint()
dengan petunjuk masuk.
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithLoginHint("bob@contoso.com")
.ExecuteAsync();
Memilih sebelumnya penyedia identitas
Jika Anda mengonfigurasi perjalanan rincian masuk untuk aplikasi Anda untuk menyertakan akun sosial, seperti Facebook, LinkedIn, atau Google, Anda dapat menentukan parameter domain_hint
. Parameter kueri ini memberikan petunjuk untuk Azure AD B2C tentang IdP sosial yang harus digunakan untuk rincian masuk. Misalnya, jika aplikasi menentukan domain_hint=facebook.com
, alur masuk langsung menuju ke halaman masuk Facebook.
Untuk mengalihkan pengguna ke penyedia identitas eksternal, lakukan tindakan berikut:
- Periksa nama domain penyedia identitas eksternal Anda. Untuk informasi selengkapnya, lihat Mengalihkan rincian masuk ke penyedia sosial.
- Buat atau gunakan objek
Dictionary
yang sudah ada untuk menyimpan parameter kueri tambahan. - Tambahkan parameter
domain_hint
dengan nama domain yang sesuai dengan kamus (misalnya,facebook.com
). - Teruskan objek parameter kueri tambahan ke dalam metode objek
WithExtraQueryParameters
konfigurasi MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("domain_hint", "facebook.com");
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
Tentukan bahasa UI
Kustomisasi bahasa pemrogram di Microsoft Azure AD B2C memungkinkan alur pengguna Anda untuk mengakomodasi berbagai bahasa yang sesuai dengan kebutuhan pelanggan Anda. Untuk informasi selengkapnya, lihat Kustomisasi bahasa.
Untuk mengatur bahasa pilihan, lakukan hal berikut:
- Mengonfigurasi penyesuaian bahasa.
- Buat atau gunakan objek
Dictionary
yang sudah ada untuk menyimpan parameter kueri tambahan. - Tambahkan parameter
ui_locales
dengan kode bahasa yang sesuai dengan kamus (misalnya,en-us
). - Teruskan objek parameter kueri tambahan ke dalam metode objek
WithExtraQueryParameters
konfigurasi MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("ui_locales", "en-us");
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
Meneruskan parameter string kueri kustom
Dengan kebijakan kustom, Anda dapat meneruskan parameter string kueri kustom. Contoh kasus penggunaan yang tepat adalah saat Anda ingin mengubah konten halaman secara dinamis.
Untuk meneruskan parameter string kueri kustom, lakukan tindakan berikut:
- Konfigurasikan elemen ContentDefinitionParameters.
- Buat atau gunakan objek
Dictionary
yang sudah ada untuk menyimpan parameter kueri tambahan. - Tambahkan parameter string kueri kustom, seperti
campaignId
. Tetapkan nilai parameter (misalnya,germany-promotion
). - Teruskan objek parameter kueri tambahan ke dalam metode objek
WithExtraQueryParameters
konfigurasi MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("campaignId", "germany-promotion");
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
Meneruskan petunjuk token ID
Aplikasi pihak yang mengandalkan dapat mengirim JSON Web Token (JWT) masuk sebagai bagian dari permintaan otorisasi OAuth2. Token masuk adalah petunjuk tentang pengguna atau permintaan otorisasi. Azure AD B2C memvalidasi token, lalu mengekstrak klaim.
Untuk memasukkan petunjuk token ID dalam permintaan autentikasi, lakukan tindakan berikut:
- Dalam kebijakan kustom Anda, tetapkan profil teknis petunjuk token ID.
- Dalam kode Anda, buat atau dapatkan token ID, lalu atur token ke variabel (misalnya,
idToken
). - Buat atau gunakan objek
Dictionary
yang sudah ada untuk menyimpan parameter kueri tambahan. - Tambahkan parameter
id_token_hint
dengan variabel terkait yang menyimpan token ID. - Teruskan objek parameter kueri tambahan ke dalam metode objek
extraQueryParameters
konfigurasi MSAL.
Dictionary<string, string> extraQueryParameters = new Dictionary<string, string>();
extraQueryParameters.Add("id_token_hint", idToken);
authResult = await app.AcquireTokenInteractive(App.ApiScopes)
.WithParentActivityOrWindow(new WindowInteropHelper(this).Handle)
.WithExtraQueryParameters(extraQueryParameters)
.ExecuteAsync();
Mengonfigurasi pengelogan
Pustaka MSAL menghasilkan pesan log yang dapat membantu mendiagnosis masalah. Aplikasi ini dapat mengonfigurasi pengelogan. Aplikasi juga dapat memberikan Anda kontrol khusus atas tingkat detail serta apakah data pribadi dan organisasi dicatat atau tidak.
Kami menyarankan Anda membuat panggilan balik pengelogan MSAL dan menyediakan cara bagi pengguna untuk mengirimkan log ketika mereka memiliki masalah autentikasi. MSAL menyediakan beberapa tingkat detail pengelogan:
- Kesalahan: Menunjukkan ada sesuatu yang salah, dan kesalahan dibuat. Tingkat ini digunakan untuk penelusuran kesalahan dan mengidentifikasi masalah.
- Peringatan: Belum tentu ada kesalahan atau kegagalan, tetapi ditujukan untuk diagnostik dan menentukan masalah.
- Info: MSAL akan mencatat peristiwa yang ditujukan untuk tujuan informasi yang tidak selalu dimaksudkan untuk penelusuran kesalahan.
- Verbose: Ini adalah tingkat default. MSAL mencatat detail lengkap perilaku pustaka.
Secara default, pencatat MSAL tidak menangkap data pribadi atau organisasi apa pun. Pustaka memberi Anda opsi untuk mengaktifkan pengelogan data pribadi dan organisasi jika Anda memutuskan untuk melakukannya.
Cuplikan kode berikut menunjukkan cara mengonfigurasi pembuatan log MSAL:
PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
.WithB2CAuthority(AuthoritySignUpSignIn)
.WithRedirectUri(RedirectUri)
.WithLogging(Log, LogLevel.Info, false) // don't log P(ersonally) I(dentifiable) I(nformation) details on a regular basis
.Build();
Mengonfigurasi URI Pengalihan
Selama proses pendaftaran aplikasi desktop, ketika Anda memilih URI pengalihan, ingatlah pertimbangan penting berikut:
-
Pengembangan: Untuk penggunaan pengembangan di aplikasi desktop, Anda dapat mengatur URI pengalihan ke
http://localhost
, dan Azure AD B2C akan mematuhi port apa pun dalam permintaan. Jika URI terdaftar berisi port, Azure Active Directory B2C hanya akan menggunakan port tersebut. Contohnya, jika redirect URI terdaftar adalahhttp://localhost
, redirect URI dalam permintaan dapat berupahttp://localhost:<randomport>
. Jika redirect URI terdaftar adalahhttp://localhost:8080
, redirect URI dalam permintaan harushttp://localhost:8080
. -
Unik: Skema URI pengalihan harus unik untuk setiap aplikasi. Dalam contoh
com.onmicrosoft.contosob2c.exampleapp://oauth/redirect
,com.onmicrosoft.contosob2c.exampleapp
adalah skemanya. Pola ini harus diikuti. Jika dua aplikasi berbagi skema yang sama, pengguna diberi pilihan aplikasi. Jika pengguna salah memilih, proses masuk gagal. -
Selesai: URI pengalihan harus memiliki skema dan jalur. Jalur harus berisi setidaknya satu karakter garis miring setelah domain. Contohnya,
//oauth/
berfungsi, dan//oauth
gagal. Jangan sertakan karakter khusus dalam URI. Misalnya, karakter garis bawah (_) tidak diperbolehkan.
Langkah berikutnya
- Untuk mempelajari selengkapnya, lihat Opsi konfigurasi MSAL untuk .NET, UWP, NetCore, dan Xamarin.