Memigrasikan API web berbasis OWIN ke b2clogin.com atau domain kustom
Artikel ini menjelaskan teknik untuk mengaktifkan dukungan untuk beberapa penerbit token di API web yang mengimplementasikan Open Web Interface for .NET (OWIN). Mendukung beberapa titik akhir token akan berguna ketika Anda memigrasikan API Azure Active Directory B2C (Azure AD B2C) dan aplikasinya dari satu domain ke domain lainnya. Misalnya, dari login.microsoftonline.com ke b2clogin.com, atau ke domain kustom.
Dengan menambahkan dukungan di API Anda untuk menerima token yang dikeluarkan oleh b2clogin.com, login.microsoftonline.com, atau domain kustom, Anda dapat memigrasikan aplikasi web Anda secara bertahap sebelum menghapus dukungan untuk token yang dikeluarkan login.microsoftonline.com dari API.
Bagian berikut ini menyajikan contoh cara mengaktifkan beberapa pengeluar dalam API web yang menggunakan komponen middleware Microsoft OWIN (Katana). Meskipun contoh kode sifatnya khusus untuk middleware Microsoft OWIN, teknik umum dapat diterapkan pada pustaka OWIN lainnya.
Prasyarat
Anda memerlukan sumber daya Azure AD B2C berikut ini sebelum melakukan langkah-langkah dalam artikel ini:
- Alur pengguna atau kebijakan kustom yang dibuat di penyewa Anda
Mendapatkan titik akhir pengeluar token
Pertama-tama Anda harus mendapatkan URI titik akhir penerbit token untuk setiap penerbit yang ingin Anda dukung di API Anda. Untuk mendapatkan titik akhir b2clogin.com danlogin.microsoftonline.com yang didukung oleh penyewa Azure AD B2C Anda, gunakan prosedur berikut ini di portal Microsoft Azure.
Mulailah dengan memilih salah satu alur pengguna yang sudah ada:
Pergilah ke penyewa Azure AD B2C Anda di portal Microsoft Azure
Di bawah Kebijakan, pilih Alur pengguna (kebijakan)
Pilih kebijakan yang sudah ada, misalnya B2C_1_signupsignin1, lalu pilih Jalankan alur pengguna
Di bawah judul Jalankan alur pengguna di dekat bagian atas halaman, pilih hyperlink untuk menuju titik akhir temuan OpenID Connect untuk alur pengguna tersebut.
Di halaman yang terbuka di browser Anda, catat nilai
issuer
, misal:https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
Gunakan drop-down Pilih domain untuk memilih domain lain, lalu lakukan dua langkah sebelumnya sekali lagi dan catat nilai
issuer
nya.
Anda sekarang memiliki dua URI yang terekam yang mirip dengan:
https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
Kebijakan kustom
Jika Anda memiliki kebijakan kustom, bukan alur pengguna, Anda dapat menggunakan proses serupa untuk mendapatkan URI pengeluar sertifikat.
- Pergilah ke penyewa Azure AD B2C Anda
- Pilih Kerangka Kerja Pengalaman Identitas (IEF)
- Pilih salah satu kebijakan pihak anda yang andalkan, misalnya, B2C_1A_signup_signin
- Gunakan drop-down Pilih domain untuk memilih domain, misalnya yourtenant.b2clogin.com
- Pilih hyperlink yang ditampilkan di bawah titik akhir temuan OpenID Connect
- Rekam nilai
issuer
- Lakukan langkah 4-6 untuk domain lain, misalnya login.microsoftonline.com
Dapatkan kode sampel
Sekarang setelah Anda memiliki kedua URI titik akhir token, Anda perlu memperbarui kode Anda untuk memastikan bahwa kedua titik akhir adalah penerbit yang valid. Untuk mendalami contoh, unduh atau kloning aplikasi sampel, lalu perbarui sampel untuk mendukung kedua titik akhir sebagai penerbit yang valid.
Unduh arsip: active-directory-b2c-dotnet-webapp-and-webapi-master.zip
git clone https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi.git
Mengaktifkan beberapa pengeluar sertifikat dalam API web
Di bagian ini, Anda harus memperbarui kode untuk menentukan bahwa kedua titik akhir penerbit token valid.
Buka solusi B2C-WebAPI-DotNet.sln di Visual Studio
Dalam proyek TaskService, buka file TaskService\App_Start\Startup.Auth.cs di editor Anda
Tambahkan direktif
using
berikut ke bagian atas file:using System.Collections.Generic;
Tambahkan properti
ValidIssuers
ke definisiTokenValidationParameters
dan tentukan kedua URI yang Anda rekam di bagian sebelumnya:TokenValidationParameters tvps = new TokenValidationParameters { // Accept only those tokens where the audience of the token is equal to the client ID of this app ValidAudience = ClientId, AuthenticationType = Startup.DefaultPolicy, ValidIssuers = new List<string> { "https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/", "https://{your-b2c-tenant}.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/"//, //"https://your-custom-domain/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/" } };
TokenValidationParameters
disediakan oleh MSAL.NET dan digunakan oleh middleware OWIN di bagian kode berikutnya di Startup.Auth.cs. Dengan beberapa penerbit yang valid yang ditentukan, alur aplikasi OWIN menyadari bahwa kedua titik akhir token adalah penerbit yang valid.
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
// This SecurityTokenProvider fetches the Azure AD B2C metadata & from the OpenID Connect metadata endpoint
AccessTokenFormat = new JwtFormat(tvps, new tCachingSecurityTokenProvider(String.Format(AadInstance, ultPolicy)))
});
Seperti disebutkan sebelumnya, pustaka OWIN lainnya biasanya menyediakan fasilitas serupa untuk mendukung beberapa pengeluar sertifikat. Meskipun dalam artikel ini tidak tersedia contoh untuk setiap pustaka, Anda dapat menggunakan teknik serupa untuk sebagian besar pustaka.
Mengalihkan titik akhir di aplikasi web
Karena kedua URI yang sekarang didukung oleh API web Anda, Anda sekarang perlu memperbarui aplikasi web Anda agar aplikasi web Anda mengambil token dari titik akhir b2clogin.com.
Misalnya, Anda dapat mengonfigurasi aplikasi web sampel untuk menggunakan titik akhir baru dengan memodifikasi nilai ida:AadInstance
dalam file TaskWebApp\Web.config dariTaskWebApp.
Ubah nilai ida:AadInstance
dalam Web.config TaskWebApp sehingga referensinya {your-b2c-tenant-name}.b2clogin.com
, bukan login.microsoftonline.com
.
Sebelumnya:
<!-- Old value -->
<add key="ida:AadInstance" value="https://login.microsoftonline.com/tfp/{0}/{1}" />
Setelah (Ganti {your-b2c-tenant}
dengan nama penyewa Azure AD B2C Anda):
<!-- New value -->
<add key="ida:AadInstance" value="https://{your-b2c-tenant}.b2clogin.com/tfp/{0}/{1}" />
Ketika untai titik akhir dibangun selama aplikasi web dijalankan, titik akhir berbasis b2clogin.com digunakan saat meminta token.
Saat menggunakan domain kustom:
<!-- Custom domain -->
<add key="ida:AadInstance" value="https://custom-domain/{0}/{1}" />
Langkah berikutnya
Artikel ini menyajikan metode konfigurasi API web yang mengimplementasikan middleware Microsoft OWIN (Katana) untuk menerima token dari beberapa titik akhir pengeluar sertifikat. Seperti yang Anda ketahui, ada beberapa untai lain dalam file Web.Config dari proyek TaskService dan TaskWebApp yang perlu diubah jika Anda ingin membangun dan menjalankan proyek ini pada penyewa Anda sendiri. Anda dipersilakan untuk memodifikasi proyek sesuai kebutuhan jika Anda ingin melihatnya bekerja. Namun, artikel ini tidak menyediakan panduan penuh untuk melakukannya.
Untuk informasi selengkapnya tentang berbagai jenis token keamanan yang dikeluarkan oleh Azure AD B2C, lihat Gambaran Umum token di Azure Active Directory B2C.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk