API aman yang digunakan untuk konektor API di Azure AD B2C

Saat mengintegrasikan REST API dalam alur pengguna Azure AD B2C, Anda harus melindungi titik akhir REST API dengan autentikasi. Autentikasi REST API memastikan bahwa hanya layanan yang memiliki kredensial yang tepat, seperti Azure AD B2C, yang dapat melakukan panggilan ke titik akhir Anda. Artikel ini membahas cara mengamankan REST API.

Prasyarat

Selesaikan langkah-langkah dalam panduan Menambahkan konektor API ke alur pengguna pendaftaran.

Anda dapat melindungi titik akhir API dengan menggunakan autentikasi dasar HTTP atau autentikasi sertifikat klien HTTPS. Dalam kedua kasus, Anda memberikan kredensial yang digunakan Azure AD B2C saat memanggil titik akhir API Anda. Kemudian titik akhir API Anda akan memeriksa kredensial dan melakukan keputusan otorisasi.

Autentikasi dasar HTTP

Autentikasi dasar HTTP didefinisikan dalam RFC 2617. Autentikasi dasar berfungsi sebagai berikut:

  • Azure AD B2C mengirim permintaan HTTP dengan kredensial klien (username dan password) di header Authorization.

  • Info masuk diformat sebagai string berkode base64 username:password.

  • API Anda kemudian bertanggung jawab untuk memeriksa nilai-nilai ini untuk melakukan keputusan otorisasi lainnya.

Untuk mengonfigurasi Konektor API dengan autentikasi dasar HTTP, ikuti langkah-langkah berikut:

  1. Masuk ke portal Azure.
  2. Di bagian Layanan Azure, pilih Azure AD B2C atau cari dan pilih Azure AD B2C.
  3. Pilih Konektor API, lalu pilih Konektor API yang ingin Anda konfigurasi.
  4. Untuk Jenis autentikasi, pilih Dasar.
  5. Berikan Nama pengguna, dan Kata sandi titik akhir REST API Anda. Providing basic authentication configuration for an API connector.
  6. Pilih Simpan.

Menambahkan nama pengguna dan kunci kebijakan kata sandi REST API

Untuk mengonfigurasi profil teknis REST API dengan autentikasi dasar HTTP, buat kunci kriptografi berikut untuk menyimpan nama pengguna dan kata sandi:

  1. Masuk ke portal Azure.
  2. Jika Anda memiliki akses ke beberapa penyewa, pilih ikon Pengaturan di menu atas untuk beralih ke penyewa Azure AD B2C Anda dari menu Direktori + langganan.
  3. Pilih Semua layanan di pojok kiri atas portal Microsoft Azure, lalu cari dan pilih AAD B2C.
  4. Pada halaman Gambaran Umum, pilih Kerangka Kerja Pengalaman Identitas.
  5. Pilih Kunci Kebijakan, lalu pilih Tambahkan.
  6. Untuk Options, pilih Manual.
  7. Untuk Nama, ketik RestApiUsername. Prefiks B2C_1A_ ditambahkan secara otomatis.
  8. Di kotak Rahasia, masukkan nama pengguna REST API.
  9. Untuk Penggunaan kunci, pilih Enkripsi.
  10. Pilih Buat.
  11. Pilih kembali Kunci Azure Policy
  12. Pilih Tambahkan.
  13. Untuk Options, pilih Manual.
  14. Untuk Nama, ketik RestApiPassword. Prefiks B2C_1A_ ditambahkan secara otomatis.
  15. Di kotak Rahasia, masukkan kata sandi REST API.
  16. Untuk Penggunaan kunci, pilih Enkripsi.
  17. Pilih Buat.

Konfigurasikan profil teknis REST API Anda untuk menggunakan autentikasi dasar HTTP

Setelah membuat kunci yang diperlukan, konfigurasikan metadata profil teknis REST API Anda untuk merujuk info masuk.

  1. Di direktori kerja Anda, buka file kebijakan ekstensi (TrustFrameworkExtensions.xml).
  2. Cari profil teknis REST API. Misalnya: REST-ValidateProfile, atau REST-GetProfile.
  3. Temukan <Metadata> elemennya.
  4. Ubah AuthenticationType menjadi Basic.
  5. Ubah AllowInsecureAuthInProduction menjadi false.
  6. Segera setelah elemen penutup </Metadata> , tambahkan cuplikan XML berikut:
    <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
    </CryptographicKeys>
    

Cuplikan XML berikut adalah contoh profil teknis RESTful yang dikonfigurasi dengan autentikasi dasar HTTP:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Basic</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Autentikasi sertifikat klien HTTPS

Autentikasi sertifikat klien adalah metode autentikasi berbasis sertifikat bersama di mana klien, Azure AD B2C, menyediakan sertifikat klien ke server untuk membuktikan identitasnya. Ini terjadi sebagai bagian dari jabat tangan SSL. API Anda bertanggung jawab untuk memvalidasi sertifikat milik klien yang valid, seperti Azure AD B2C, dan melakukan keputusan otorisasi. Sertifikat klien adalah sertifikat digital X.509.

Penting

Pada lingkungan produksi, sertifikat harus ditandatangani oleh otoritas sertifikat.

Membuat sertifikat

Untuk membuat sertifikat, Anda dapat menggunakan Azure Key Vault, yang memiliki opsi untuk sertifikat dan integrasi yang ditandatangani sendiri dengan penyedia penerbit sertifikat untuk sertifikat bertanda tangan. Pengaturan yang disarankan meliputi:

  • Subjek: CN=<yourapiname>.<tenantname>.onmicrosoft.com
  • Jenis Konten: PKCS #12
  • Jenis Tindakan Seumur Hidup: Email all contacts at a given percentage lifetime atau Email all contacts a given number of days before expiry
  • Jenis Kunci: RSA
  • Ukuran Kunci: 2048
  • Kunci privat yang dapat diekspor: Yes (agar dapat mengekspor file.pfx)

Kemudian Anda dapat mengekspor sertifikat.

Opsi 2: Siapkan sertifikat yang ditandatangani sendiri menggunakan modul PowerShell

Jika Anda belum memiliki sertifikat, Anda dapat menggunakan sertifikat yang ditandatangani sendiri. Sertifikat yang ditandatangani sendiri adalah sertifikat keamanan yang tidak ditandatangani oleh otoritas sertifikat (CA) dan tidak memberikan jaminan keamanan atas sertifikat yang ditandatangani oleh CA.

Di Windows, gunakan cmdlet New-SelfSignedCertificate di PowerShell untuk membuat sertifikat digital.

  1. Jalankan perintah PowerShell berikut ini untuk membuat sertifikat digital yang ditandatangani sendiri. Ubah argumen -Subject yang sesuai untuk aplikasi Anda dan nama penyewa Azure Active Directory B2C seperti contosowebapp.contoso.onmicrosoft.com. Anda juga dapat mengatur -NotAftertanggal untuk menetapkan waktu kedaluwarsa yang berbeda untuk sertifikat.

    New-SelfSignedCertificate `
        -KeyExportPolicy Exportable `
        -Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
        -KeyAlgorithm RSA `
        -KeyLength 2048 `
        -KeyUsage DigitalSignature `
        -NotAfter (Get-Date).AddMonths(12) `
        -CertStoreLocation "Cert:\CurrentUser\My"
    
  2. Di komputer Windows, cari dan pilih Kelola sertifikat pengguna

  3. Di bawah Sertifikat - Pengguna Saat Ini, pilih Sertifikat>Pribadi>yourappname.yourtenant.onmicrosoft.com.

  4. Pilih sertifikat, lalu pilihTindakan>Semua Tugas>Ekspor.

  5. Pilih Berikutnya>Ya, ekspor kunci privat>Berikutnya.

  6. Terima default untuk Format File Ekspor, lalu pilih Berikutnya.

  7. Aktifkan opsi Kata Sandi, masukkan sandi untuk sertifikat, lalu pilih Berikutnya.

  8. Untuk menentukan lokasi penyimpanan sertifikat, pilih Jelajahi dan navigasikan ke direktori pilihan Anda.

  9. Pada jendela Simpan Sebagai, masukkan Nama file, lalu pilih Simpan.

  10. Pilih Berikutnya>Selesai.

Agar Azure Active Directory B2C menerima kata sandi file .pfx, kata sandi harus dienkripsi dengan opsi TripleDES-SHA1 di utilitas Ekspor Simpan Sertifikat Windows, bukan di AES256-SHA256.

Mengonfigurasi Konektor API

Untuk mengonfigurasi Konektor API dengan autentikasi sertifikat klien, ikuti langkah-langkah berikut:

  1. Masuk ke portal Azure.
  2. Di bagian Layanan Azure, pilih Azure AD B2C.
  3. Pilih Konektor API, lalu pilih Konektor API yang ingin Anda konfigurasi.
  4. Untuk Jenis autentikasi, pilih Sertifikat.
  5. Pada kotak Unggah sertifikat, pilih file .pfx sertifikat Anda dengan kunci privat.
  6. Pada kotak Masukkan Kata Sandi, ketikkan kata sandi sertifikat. Providing certificate authentication configuration for an API connector.
  7. Pilih Simpan.

Memberikan keputusan otorisasi

API Anda harus menerapkan otorisasi berdasarkan sertifikat klien yang dikirim untuk melindungi titik akhir API. Untuk Azure App Service dan Azure Functions, lihat mengonfigurasi autentikasi timbal balik TLS untuk mempelajari cara mengaktifkan dan memvalidasi sertifikat dari kode API Anda. Anda dapat menggunakan API Management Azure sebagai lapisan di depan layanan API apa pun untuk memeriksa properti sertifikat klien terhadap nilai yang diinginkan.

Memperbarui sertifikat

Disarankan agar Anda mengatur peringatan pengingat kapan sertifikat Anda akan kedaluwarsa. Anda perlu membuat sertifikat baru dan mengulangi langkah-langkah di atas saat sertifikat yang digunakan akan kedaluwarsa. Untuk "menggulung" penggunaan sertifikat baru, layanan API Anda dapat terus menerima sertifikat lama dan baru selama jangka waktu sementara ketika sertifikat baru disebarkan.

Untuk mengunggah sertifikat baru ke konektor API yang ada, pilih konektor API di bawah konektor API dan klik Unggah sertifikat baru. Sertifikat yang terakhir diunggah, yang tidak kedaluwarsa dan yang tanggal mulainya telah berlalu akan secara otomatis digunakan oleh Azure AD B2C.

Providing a new certificate to an API connector when one already exists.

Menambahkan kunci kebijakan sertifikat klien

  1. Masuk ke portal Azure.
  2. Jika Anda memiliki akses ke beberapa penyewa, pilih ikon Pengaturan di menu atas untuk beralih ke penyewa Azure AD B2C Anda dari menu Direktori + langganan.
  3. Pilih Semua layanan di pojok kiri atas portal Microsoft Azure, lalu cari dan pilih AAD B2C.
  4. Pada halaman Gambaran Umum, pilih Kerangka Kerja Pengalaman Identitas.
  5. Pilih Kunci Kebijakan, lalu pilih Tambahkan.
  6. Dalam kotak Opsi, pilih Unggah.
  7. Dalam kotak Nama, ketik RestApiClientCertificate. Prefiks B2C_1A_ ditambahkan secara otomatis.
  8. Dalam kotak Unggah file, pilih file .pfx sertifikat Anda dengan kunci pribadi.
  9. Dalam kotak Kata Sandi, ketikkan kata sandi sertifikat.
  10. Pilih Buat.

Mengonfigurasi profil teknis REST API Anda untuk menggunakan autentikasi sertifikat klien

Setelah membuat kunci yang diperlukan, konfigurasikan metadata profil teknis REST API Anda untuk merujuk sertifikat klien.

  1. Di direktori kerja Anda, buka file kebijakan ekstensi (TrustFrameworkExtensions.xml).
  2. Cari profil teknis REST API. Misalnya: REST-ValidateProfile, atau REST-GetProfile.
  3. Temukan <Metadata> elemennya.
  4. Ubah AuthenticationType menjadi ClientCertificate.
  5. Ubah AllowInsecureAuthInProduction menjadi false.
  6. Segera setelah elemen penutup </Metadata> , tambahkan cuplikan XML berikut:
    <CryptographicKeys>
       <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
    </CryptographicKeys>
    

Cuplikan XML berikut adalah contoh profil teknis RESTful yang dikonfigurasi dengan sertifikat klien HTTP:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">ClientCertificate</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Autentikasi pembawa OAuth2

Autentikasi token pembawa ditentukan dalam Kerangka Kerja Otorisasi OAuth2.0: Penggunaan Token Pembawa (RFC 6750). Dalam autentikasi token pembawa, Azure AD B2C mengirim permintaan HTTP dengan token di header otorisasi.

Authorization: Bearer <token>

Token pembawa adalah string buram. Ini bisa berupa token akses JWT atau string apa pun yang diharapkan REST API untuk dikirim oleh Azure AD B2C di header otorisasi. Azure AD B2C mendukung tipe berikut ini:

  • Token pembawa. Untuk dapat mengirim token pembawa di profil teknis Restful, kebijakan Anda harus terlebih dahulu memperoleh token pembawa dan kemudian menggunakannya di profil teknis RESTful.
  • Token pembawa statis. Gunakan pendekatan ini saat REST API Anda mengeluarkan token akses jangka panjang. Untuk menggunakan token pembawa statis, buat kunci kebijakan dan buat referensi dari profil teknis RESTful ke kunci kebijakan Anda.

Menggunakan OAuth2 Bearer

Langkah-langkah berikut menunjukkan cara menggunakan kredensial klien untuk mendapatkan token pembawa dan meneruskannya ke header Otorisasi panggilan REST API.

Tentukan klaim untuk menyimpan token pembawa

Klaim menyediakan penyimpanan data sementara selama eksekusi kebijakan Azure AD B2C. Skema klaim adalah tempat di mana Anda menyatakan klaim Anda. Token akses harus disimpan dalam klaim yang akan digunakan nanti.

  1. Buka file ekstensi kebijakan Anda. Contohnya, SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Cari elemen BuildingBlocks. Jika elemen tersebut tidak ada, tambahkan.
  3. Temukan elemen ClaimsSchema. Jika elemen tersebut tidak ada, tambahkan.
  4. Tambahkan klaim berikut ke elemen ClaimsSchema
<ClaimType Id="bearerToken">
  <DisplayName>Bearer token</DisplayName>
  <DataType>string</DataType>
</ClaimType>
<ClaimType Id="grant_type">
  <DisplayName>Grant type</DisplayName>
  <DataType>string</DataType>
</ClaimType>
<ClaimType Id="scope">
  <DisplayName>scope</DisplayName>
  <DataType>string</DataType>
</ClaimType>

Memperoleh token akses

Anda dapat memperoleh token akses dengan salah satu dari beberapa cara, untuk dari penyedia identitas federasi, dengan memanggil REST API yang mengembalikan token akses, dengan menggunakan alur ROPC, atau dengan menggunakan alur kredensial klien. Alur kredensial klien umumnya digunakan untuk interaksi server-ke-server yang harus berjalan di latar belakang, tanpa interaksi langsung dengan pengguna.

Memperoleh token akses Microsoft Entra

Contoh berikut menggunakan profil teknis REST API untuk membuat permintaan ke titik akhir token Microsoft Entra menggunakan kredensial klien yang diteruskan sebagai autentikasi dasar HTTP. Untuk informasi selengkapnya, lihat Platform identitas Microsoft dan alur kredensial klien OAuth 2.0.

Sebelum profil teknis dapat berinteraksi dengan ID Microsoft Entra untuk mendapatkan token akses, Anda perlu mendaftarkan aplikasi. Azure AD B2C mengandalkan platform Microsoft Entra. Anda dapat membuat aplikasi di penyewa Azure AD B2C, atau di penyewa Microsoft Entra apa pun yang Anda kelola. Untuk mendaftarkan aplikasi:

  1. Masuk ke portal Azure.
  2. Jika Anda memiliki akses ke beberapa penyewa, pilih ikon Pengaturan di menu atas untuk beralih ke penyewa Azure AD B2C Anda dari menu Direktori + langganan.
  3. Di menu sebelah kiri, pilih ID Microsoft Entra. Atau, pilih Semua layanan dan cari dan pilih MICROSOFT Entra ID.
  4. Pilih Pendaftaran aplikasi, lalu pilih Pendaftaran baru.
  5. Masukkan Nama untuk aplikasi. Misalnya, Client_Credentials_Auth_app.
  6. Di bawah Jenis akun yang didukung, pilih Hanya akun dalam direktori organisasi ini.
  7. Pilih Daftarkan.
  8. Catat ID Aplikasi (klien).

Untuk alur kredensial klien, Anda perlu membuat rahasia aplikasi. Rahasia klien juga dikenal sebagai kata sandi aplikasi. Aplikasi Anda menggunakan rahasia untuk memperoleh token akses.

  1. Di halaman ID Microsoft Entra - Pendaftaran aplikasi, pilih aplikasi yang Anda buat, misalnya Client_Credentials_Auth_app.
  2. Di menu sebelah kiri, di bagian Kelola, pilih Sertifikat & rahasia.
  3. Pilih Rahasia klien baru.
  4. Masukkan deskripsi untuk rahasia klien dalam kotak Deskripsi. Misalnya, clientsecret1.
  5. Di bawahKedaluwarsa, pilih durasi yang membuat rahasia tersebut valid, lalu pilih Tambahkan.
  6. Catat Nilai rahasia untuk digunakan dalam kode aplikasi klien Anda. Nilai rahasia ini tidak pernah ditampilkan lagi setelah Anda meninggalkan halaman ini. Anda menggunakan nilai ini sebagai rahasia aplikasi dalam kode aplikasi Anda.

Membuat kunci kebijakan AAD B2C

Anda perlu menyimpan ID dan nilai rahasia klien yang sebelumnya Anda rekam di penyewa Azure AD B2C Anda.

  1. Masuk ke portal Azure.
  2. Jika Anda memiliki akses ke beberapa penyewa, pilih ikon Pengaturan di menu atas untuk beralih ke penyewa Azure AD B2C Anda dari menu Direktori + langganan.
  3. Pilih Semua layanan di pojok kiri atas portal Microsoft Azure, lalu cari dan pilih AAD B2C.
  4. Pada halaman Gambaran Umum, pilih Kerangka Kerja Pengalaman Identitas.
  5. Pilih Tombol Kebijakan, lalu pilih Tambahkan.
  6. Untuk Opsi, pilih Manual.
  7. Masukkan Nama untuk kunci kebijakan, SecureRESTClientId. Awalan B2C_1A_ ditambahkan secara otomatis ke nama kunci Anda.
  8. Di Rahasia, masukkan ID klien Anda yang sebelumnya Anda rekam.
  9. Untuk Penggunaan kunci, pilih Signature.
  10. Pilih Buat.
  11. Buat kunci kebijakan lain dengan pengaturan berikut:
    • Nama: SecureRESTClientSecret.
    • Rahasia: masukkan rahasia klien Anda yang sebelumnya Anda rekam

Untuk ServiceUrl, ganti nama penyewa Anda dengan nama penyewa Microsoft Entra Anda. Lihat referensi profil teknis RESTful untuk semua opsi yang tersedia.

<TechnicalProfile Id="REST-AcquireAccessToken">
  <DisplayName></DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="ServiceUrl">https://login.microsoftonline.com/your-tenant-name.onmicrosoft.com/oauth2/v2.0/token</Item>
    <Item Key="AuthenticationType">Basic</Item>
     <Item Key="SendClaimsIn">Form</Item>
  </Metadata>
  <CryptographicKeys>
    <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_SecureRESTClientId" />
    <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_SecureRESTClientSecret" />
  </CryptographicKeys>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="grant_type" DefaultValue="client_credentials" AlwaysUseDefaultValue="true" />
    <InputClaim ClaimTypeReferenceId="scope" DefaultValue="https://graph.microsoft.com/.default" AlwaysUseDefaultValue="true" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="bearerToken" PartnerClaimType="access_token" />
  </OutputClaims>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Catatan

Jika Anda menggunakan klain grant_type atau scope di profil teknis lainnya, kami sarankan mereka juga menentukan DefaultValue dan menggunakan AlwaysUseDefaultValue="true" untuk menghindari potensi konflik dalam pengikatan terhadap nilai yang salah.

Mengubah profil teknis REST untuk menggunakan autentikasi token pembawa

Untuk mendukung autentikasi token pembawa dalam kebijakan kustom Anda, ubah profil teknis REST API dengan menggunakan langkah-langkah berikut:

  1. Di direktori kerja Anda, buka file TrustFrameworkExtensions.xml kebijakan ekstensi.

  2. Cari <TechnicalProfile> node yang menyertakan Id="REST-API-SignUp".

  3. Temukan <Metadata> elemennya.

  4. Ubah AuthenticationType menjadi Bearer, sebagai berikut:

    <Item Key="AuthenticationType">Bearer</Item>
    
  5. Ubah atau tambahkan UseClaimAsBearerTokenke bearerToken, sebagai berikut. BearerToken adalah nama klaim bahwa token pembawa diambil dari (klaim output dari REST-AcquireAccessToken).

    <Item Key="UseClaimAsBearerToken">bearerToken</Item>
    
  6. Tambahkan klaim dari langkah sebelumnya sebagai klaim input:

    <InputClaim ClaimTypeReferenceId="bearerToken"/>
    

Setelah memperbarui kebijakan, profil teknis Anda akan terlihat mirip dengan kode XML berikut:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Bearer</Item>
        <Item Key="UseClaimAsBearerToken">bearerToken</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="bearerToken"/>
      </InputClaims>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Memanggil profil teknis REST

Untuk memanggil REST-GetProfile profil teknis, Anda harus terlebih dahulu memperoleh token akses Microsoft Entra menggunakan REST-AcquireAccessToken profil teknis. Contoh berikut menunjukkan cara memanggil profil teknis REST-GetProfile dari profil teknis validasi:

<ValidationTechnicalProfiles>
  <ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
  <ValidationTechnicalProfile ReferenceId="REST-GetProfile" />
</ValidationTechnicalProfiles>

Contoh berikut menunjukkan cara memanggil profil teknis REST-GetProfile dari perjalanan pengguna, atau sub perjalanan:

<OrchestrationSteps>
  <OrchestrationStep Order="2" Type="ClaimsExchange">
    <ClaimsExchanges>
      <ClaimsExchange Id="REST-AcquireAccessTokens" TechnicalProfileReferenceId="REST-AcquireAccessToken" />
    </ClaimsExchanges>
  </OrchestrationStep>

  <OrchestrationStep Order="3" Type="ClaimsExchange">
    <ClaimsExchanges>
      <ClaimsExchange Id="REST-GetProfile" TechnicalProfileReferenceId="REST-GetProfile" />
    </ClaimsExchanges>
  </OrchestrationStep>
</OrchestrationSteps>

Menggunakan pembawa OAuth2 statis

Menambahkan kunci kebijakan token pembawa OAuth2

Untuk mengonfigurasi profil teknis REST API dengan token pembawa OAuth2, dapatkan token akses dari pemilik REST API. Kemudian buat kunci kriptografi berikut untuk menyimpan token pembawa.

  1. Masuk ke portal Azure.
  2. Jika Anda memiliki akses ke beberapa penyewa, pilih ikon Pengaturan di menu atas untuk beralih ke penyewa Azure AD B2C Anda dari menu Direktori + langganan.
  3. Pilih Semua layanan di pojok kiri atas portal Microsoft Azure, lalu cari dan pilih AAD B2C.
  4. Pada halaman Gambaran Umum, pilih Kerangka Kerja Pengalaman Identitas.
  5. Pilih Kunci Kebijakan, lalu pilih Tambahkan.
  6. Untuk Opsi, pilih Manual.
  7. Masukkan Nama untuk kunci kebijakan. Contohnya, RestApiBearerToken. Awalan B2C_1A_ ditambahkan secara otomatis ke nama kunci Anda.
  8. Di Rahasia, masukkan rahasia klien Anda yang sebelumnya Anda rekam.
  9. Untuk Penggunaan kunci, pilih Encryption.
  10. Pilih Buat.

Konfigurasikan profil teknis REST API Anda untuk menggunakan kunci kebijakan token pembawa

Setelah membuat kunci yang diperlukan, konfigurasikan metadata profil teknis REST API Anda untuk merujuk token pembawa.

  1. Di direktori kerja Anda, buka file kebijakan ekstensi (TrustFrameworkExtensions.xml).
  2. Cari profil teknis REST API. Misalnya: REST-ValidateProfile, atau REST-GetProfile.
  3. Temukan <Metadata> elemennya.
  4. Ubah AuthenticationType menjadi Bearer.
  5. Ubah AllowInsecureAuthInProduction menjadi false.
  6. Segera setelah elemen penutup </Metadata> , tambahkan cuplikan XML berikut:
    <CryptographicKeys>
       <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
    </CryptographicKeys>
    

Cuplikan XML berikut adalah contoh profil teknis RESTful yang dikonfigurasi dengan autentikasi token pembawa:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Bearer</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Tambahkan referensi profil teknis validasi ke profil teknis pendaftaran, yang memanggil REST-AcquireAccessToken. Perilaku ini berarti bahwa Azure AD B2C meneruskan untuk membuat akun di direktori hanya setelah validasi berhasil.

Contohnya:

```XML
<ValidationTechnicalProfiles>
   ....
   <ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
   ....
</ValidationTechnicalProfiles>

Autentikasi kunci API

Beberapa layanan menggunakan mekanisme "kunci API" untuk mengaburkan akses ke titik akhir HTTP Anda selama pengembangan dengan mengharuskan pemanggil untuk menyertakan kunci unik sebagai header HTTP atau parameter kueri HTTP. Untuk Azure Functions, Anda dapat menyelesaikannya dengan menyertakan code sebagai parameter kueri di URL Titik akhir koneksi API Anda. (Misalnya, https://contoso.azurewebsites.net/api/endpoint?code=0123456789).

Ini bukan mekanisme yang harus digunakan sendiri dalam produksi. Oleh karena itu, konfigurasi untuk autentikasi dasar atau sertifikat selalu diperlukan. Jika Anda tidak ingin menerapkan metode autentikasi apa pun (tidak disarankan) untuk tujuan pengembangan, Anda dapat memilih autentikasi 'dasar' dalam konfigurasi konektor API dan menggunakan nilai sementara untuk username dan password yang dapat diabaikan oleh API Anda saat menerapkan otorisasi yang tepat.

Kunci API adalah pengidentifikasi unik yang digunakan untuk mengautentikasi pengguna untuk mengakses titik akhir REST API. Kunci dikirim dalam header HTTP kustom. Misalnya, pemicu HTTP Azure Functions menggunakan header HTTP x-functions-key untuk mengidentifikasi peminta.

Tambahkan kunci kebijakan utama API

Untuk mengonfigurasi profil teknis REST API dengan autentikasi kunci API, buat kunci kriptografi berikut untuk menyimpan kunci API:

  1. Masuk ke portal Azure.
  2. Jika Anda memiliki akses ke beberapa penyewa, pilih ikon Pengaturan di menu atas untuk beralih ke penyewa Azure AD B2C Anda dari menu Direktori + langganan.
  3. Pilih Semua layanan di pojok kiri atas portal Microsoft Azure, lalu cari dan pilih AAD B2C.
  4. Pada halaman Gambaran Umum, pilih Kerangka Kerja Pengalaman Identitas.
  5. Pilih Kunci Kebijakan, lalu pilih Tambahkan.
  6. Untuk Options, pilih Manual.
  7. Untuk Nama,ketik RestApiKey. Prefiks B2C_1A_ ditambahkan secara otomatis.
  8. Di kotak Rahasia, masukkan kunci REST API.
  9. Untuk Penggunaan kunci, pilih Enkripsi.
  10. Pilih Buat.

Konfigurasikan profil teknis REST API Anda untuk menggunakan autentikasi kunci API

Setelah membuat kunci yang diperlukan, konfigurasikan metadata profil teknis REST API Anda untuk merujuk info masuk.

  1. Di direktori kerja Anda, buka file kebijakan ekstensi (TrustFrameworkExtensions.xml).
  2. Cari profil teknis REST API. Misalnya: REST-ValidateProfile, atau REST-GetProfile.
  3. Temukan <Metadata> elemennya.
  4. Ubah AuthenticationType menjadi ApiKeyHeader.
  5. Ubah AllowInsecureAuthInProduction menjadi false.
  6. Segera setelah elemen penutup </Metadata> , tambahkan cuplikan XML berikut:
    <CryptographicKeys>
        <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
    </CryptographicKeys>
    

Id kunci kriptografi mendefinisikan header HTTP. Dalam contoh ini, kunci API dikirim sebagai x-functions-key.

Cuplikan XML berikut adalah contoh profil teknis RESTful yang dikonfigurasi untuk memanggil Fungsi Azure dengan autentikasi kunci API:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">ApiKeyHeader</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Langkah berikutnya