Mengonfigurasi penyedia Tidak Diautentikasi

Penyedia Unauthenticated memberi tahu Pembuat API Data (DAB) untuk tidak memeriksa atau memvalidasi JSON Web Token (JWT). Setiap permintaan berjalan sebagai anonymous peran. Tidak ada pengecualian di dalam DAB.

Nota

Fungsionalitas Pembuat API Data 2.0 yang dijelaskan di bagian ini saat ini dalam pratinjau dan mungkin berubah sebelum ketersediaan umum. Untuk informasi selengkapnya, lihat Apa yang baru dalam versi 2.0.

Gunakan penyedia ini ketika Anda ingin DAB memperlakukan setiap permintaan sebagai anonymous, bahkan jika layanan lain di depan DAB melakukan autentikasi atau menerapkan kebijakan akses.

Penting

Penyedia Unauthenticated tidak pernah mengubah identitas upstream menjadi identitas DAB. Jika Anda memerlukan DAB untuk memvalidasi token, mengaktifkan authenticated peran, menggunakan peran kustom, atau meneruskan klaim pengguna ke kebijakan hilir, gunakan penyedia validasi seperti EntraId, , Customatau AppService.

Proses autentikasi

Dengan penyedia Unauthenticated, DAB melompati validasi token sepenuhnya dan mengevaluasi izin sebagai anonymous.

Fase Apa yang terjadi
Permintaan klien Klien mengirimkan permintaan ke DAB, baik secara langsung atau melalui layanan lain
Kontrol hulu Front end, gateway, atau proksi dapat mengautentikasi pemanggil atau menerapkan akses kasar sebelum meneruskan permintaan
Meneruskan permintaan Permintaan mencapai DAB
Pemrosesan DAB DAB tidak memvalidasi JWT dan selalu memperlakukan permintaan sebagai anonymous
Otorisasi DAB mengevaluasi izin entitas untuk peran tersebut anonymous

Kapan menggunakan penyedia ini

Gunakan Unauthenticated dalam skenario ini:

Skenario Cocok? Mengapa
API Management atau gateway mengautentikasi pengguna terlebih dahulu Yes Ujung depan dapat membatasi akses, sementara DAB masih hanya mengotorisasi permintaan untuk peran tersebut anonymous
Layanan khusus internal di balik batas jaringan tertutup Yes Akses jaringan dikendalikan di luar DAB, dan DAB dapat tetap dalam mode anonymous saja.
Penyiapan lokal cepat tanpa mengonfigurasi validasi JWT Yes Cara paling sederhana untuk memulai
DAB diekspos langsung ke browser atau klien publik No DAB tidak memvalidasi token identitas
Anda memerlukan authenticated atau aktivasi peran kustom di dalam DAB No Hanya anonymous aktif dengan penyedia ini

Referensi cepat

Setting Nilai
Provider Unauthenticated
Token diperlukan No
Peran DAB aktif anonymous
Mendukung validasi JWT No
authenticated Mendukung peran No
Mendukung role kustom No

Langkah 1: Mengonfigurasi penyedia

Atur penyedia autentikasi ke Unauthenticated.

CLI

dab configure \
  --runtime.host.authentication.provider Unauthenticated

Konfigurasi yang dihasilkan

{
  "runtime": {
    "host": {
      "authentication": {
        "provider": "Unauthenticated"
      }
    }
  }
}

Nota

Penyedia Unauthenticated adalah default untuk konfigurasi baru di DAB 2.0. Menjalankan dab init membuat konfigurasi kerja tanpa pengaturan JWT apa pun.

Langkah 2: Mengonfigurasi izin entitas untuk anonymous

Karena DAB memperlakukan semua permintaan sebagai anonymous, entitas Anda harus memberikan akses ke anonymous peran untuk operasi apa pun yang ingin Anda izinkan.

Konfigurasi contoh

{
  "entities": {
    "Book": {
      "source": "dbo.Books",
      "permissions": [
        {
          "role": "anonymous",
          "actions": ["read"]
        }
      ]
    }
  }
}

Jika entitas memberikan akses hanya ke authenticated atau peran kustom, permintaan gagal karena peran tersebut tidak pernah diaktifkan saat Unauthenticated dikonfigurasi.

Penting

Saat Unauthenticated aktif, authenticated dan peran kustom yang ditentukan dalam izin entitas tidak pernah diaktifkan. Jika konfigurasi Anda berisi peran tersebut, DAB akan mengeluarkan peringatan saat startup.

Langkah 3: Secara opsional menempatkan layanan lain di depan DAB

Layanan lain masih dapat mengautentikasi penelepon atau menerapkan aturan akses kasar sebelum permintaan mencapai DAB. Itu tidak mengubah perilaku DAB:

  1. Autentikasikan pemanggil di antarmuka depan, gateway, atau proksi.
  2. Terapkan kebijakan akses berbutir kasar pada lokasi tersebut.
  3. Teruskan permintaan yang disetujui ke DAB.
  4. Gunakan izin entitas DAB untuk mengontrol apa yang dapat dilakukan peran anonymous.

Pola ini berfungsi dengan baik ketika platform sekitar mengontrol siapa yang dapat mencapai DAB, sementara DAB sengaja tetap terbatas pada anonymous saja.

Apa yang tidak dilakukan penyedia ini

Penyedia Unauthenticated tidak melakukan:

  • memvalidasi token pembawa
  • aktifkan authenticated peran
  • mengaktifkan peran kustom dari klaim
  • membuat klaim dapat diakses untuk kebijakan basis data
  • melakukan otorisasi khusus pengguna di dalam DAB

Jika Anda memerlukan kemampuan tersebut, gunakan penyedia yang memasok identitas ke DAB.

Contoh konfigurasi lengkap

{
  "$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json",
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@env('SQL_CONNECTION_STRING')"
  },
  "runtime": {
    "host": {
      "authentication": {
        "provider": "Unauthenticated"
      }
    }
  },
  "entities": {
    "Book": {
      "source": "dbo.Books",
      "permissions": [
        {
          "role": "anonymous",
          "actions": ["read"]
        }
      ]
    }
  }
}