Bagikan melalui


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:

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:

  1. Pergilah ke penyewa Azure AD B2C Anda di portal Microsoft Azure

  2. Di bawah Kebijakan, pilih Alur pengguna (kebijakan)

  3. Pilih kebijakan yang sudah ada, misalnya B2C_1_signupsignin1, lalu pilih Jalankan alur pengguna

  4. Di bawah judul Jalankan alur pengguna di dekat bagian atas halaman, pilih hyperlink untuk menuju titik akhir temuan OpenID Connect untuk alur pengguna tersebut.

    Hyperlink URI yang terkenal di halaman Jalankan sekarang pada portal Microsoft Azure

  5. Di halaman yang terbuka di browser Anda, catat nilai issuer, misal:

    https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/

  6. Gunakan drop-down Pilih domain untuk memilih domain lain, lalu lakukan dua langkah sebelumnya sekali lagi dan catat nilai issuernya.

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.

  1. Pergilah ke penyewa Azure AD B2C Anda
  2. Pilih Kerangka Kerja Pengalaman Identitas (IEF)
  3. Pilih salah satu kebijakan pihak anda yang andalkan, misalnya, B2C_1A_signup_signin
  4. Gunakan drop-down Pilih domain untuk memilih domain, misalnya yourtenant.b2clogin.com
  5. Pilih hyperlink yang ditampilkan di bawah titik akhir temuan OpenID Connect
  6. Rekam nilai issuer
  7. 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.

  1. Buka solusi B2C-WebAPI-DotNet.sln di Visual Studio

  2. Dalam proyek TaskService, buka file TaskService\App_Start\Startup.Auth.cs di editor Anda

  3. Tambahkan direktif using berikut ke bagian atas file:

    using System.Collections.Generic;

  4. Tambahkan properti ValidIssuers ke definisi TokenValidationParameters 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.