Apa itu "ranah" dalam otentikasi dasar

307

Saya menyiapkan otentikasi dasar di situs php dan menemukan halaman ini di manual php yang menunjukkan pengaturan. Apa arti "ranah" di sini di header?

header('WWW-Authenticate: Basic realm="My Realm"');

Apakah ini halaman yang diminta?

Tanpa Rayuan
sumber

Jawaban:

284

Dari RFC 1945 (HTTP / 1.0) dan RFC 2617 (Otentikasi HTTP dirujuk oleh HTTP / 1.1)

Atribut realm (case-insensitive) diperlukan untuk semua skema otentikasi yang mengeluarkan tantangan. Nilai ranah (peka huruf besar kecil), dalam kombinasi dengan URL akar kanonik dari server yang diakses, menentukan ruang perlindungan. Ranah ini memungkinkan sumber daya yang dilindungi pada server untuk dipartisi ke dalam satu set ruang perlindungan, masing-masing dengan skema otentikasi dan / atau database otorisasi sendiri. Nilai ranah adalah string, umumnya ditugaskan oleh server asal, yang mungkin memiliki semantik tambahan khusus untuk skema otentikasi.

Singkatnya, halaman di ranah yang sama harus berbagi kredensial. Jika kredensial Anda berfungsi untuk halaman dengan ranah "Realmku" , harus diasumsikan bahwa kombinasi nama pengguna dan kata sandi yang sama harus berfungsi untuk halaman lain dengan ranah yang sama.

Tim Cooper
sumber
7
Beberapa server tidak menyediakan bidang dalam tantangan otentikasi mereka.
orkoden
5
Ketika saya bekerja dengan IIS, saya mengkonfigurasi ranah differnt untuk berbagai folder virtual (di bawah situs yang sama). Tetapi saya tidak yakin apakah ini benar. Tapi sepertinya berhasil untukku. Ketika saya mengunjungi folder virtual untuk ranah yang berbeda, saya memang mendapatkan prompt untuk kredensial.
smwikipedia
1
Catatan: RFC 2617 telah diperbarui (TIDAK usang) oleh RFC 7235
Hawkeye Parker
117

Suatu ranah dapat dilihat sebagai area (bukan halaman tertentu, itu bisa berupa sekelompok halaman) yang digunakan kredensial; ini juga string yang akan ditampilkan ketika browser muncul jendela masuk, misalnya

Silakan masukkan nama pengguna dan kata sandi Anda untuk <realm name>:

Ketika ranah berubah, peramban dapat menampilkan jendela sembulan lain jika tidak memiliki kredensial untuk bidang itu.

Mendongkrak
sumber
Bagaimana cara mengelompokkan halaman di bawah ranah?
Hijau
@ Hijau Berlanjut .htaccessdengan hierarki, jadi apa pun yang berada di bawah direktori tertentu dapat diberikan ranah yang sama.
Ja͢ck
1
@ Jack, saya secara naif berpikir bahwa semua halaman dengan header otentikasi dengan ranah yang diberikan ada di ranah itu dan tidak ada aturan lain. Apakah aku salah?
15

Menurut RFC 7235 , realmparameter dicadangkan untuk mendefinisikan ruang perlindungan (set halaman atau sumber daya di mana kredensial diperlukan) dan itu digunakan oleh skema otentikasi untuk menunjukkan lingkup perlindungan .

Untuk detail lebih lanjut, lihat kutipan di bawah ini (highlight tidak ada dalam RFC):

2.2. Ruang Perlindungan (Realm)

Parameter otentikasi "ranah" dicadangkan untuk digunakan oleh skema otentikasi yang ingin menunjukkan cakupan perlindungan .

Ruang perlindungan didefinisikan oleh URI root kanonik (skema dan komponen otoritas dari URI permintaan efektif) dari server yang sedang diakses, dikombinasikan dengan nilai ranah jika ada. Ranah ini memungkinkan sumber daya yang dilindungi pada server untuk dipartisi ke dalam satu set ruang perlindungan, masing-masing dengan skema otentikasi dan / atau database otorisasi sendiri. Nilai ranah adalah string, umumnya ditugaskan oleh server asal, yang dapat memiliki semantik tambahan khusus untuk skema otentikasi. Perhatikan bahwa respons dapat memiliki beberapa tantangan dengan skema auth yang sama tetapi dengan ranah yang berbeda. [...]


Catatan 1: Kerangka kerja untuk otentikasi HTTP saat ini ditentukan oleh RFC 7235 , yang memperbarui RFC 2617 dan membuat RFC 2616 usang.

Catatan 2: The realmparameter tidak lagi selalu diperlukan pada tantangan .

cassiomolin
sumber