Saya memiliki persyaratan di mana, saya harus mengganti otentikasi pengguna default dengan otentikasi server pusat yaitu server SSO.
Dengan debugging Drupal saya mengetahui bahwa semua manajemen sesi terjadi dalam includes/session.inc
file. Saya ingin melakukan otentikasi seperti yang ditunjukkan pada gambar:
SKENARIO: Login
Detail langkah-langkahnya adalah:
- Ganti formulir login untuk mengirimkan nama pengguna dan kata sandi ke server SSO ( bukan pada Drupal , tetapi pada .NET).
- Otentikasi pengguna di server SSO menggunakan database situs itu; dan mengirim respons kembali ke halaman PHP khusus di situs web saya (atau formulir dengan modul?).
- Menggunakan respons, mengidentifikasi pengguna di tabel pengguna , dan membuat sesi untuk pengguna itu tanpa memeriksa kata sandi (karena itu berarti otentikasi ganda). Secara default, Drupal menetapkan cookie dengan nama
$insecure_session_name
variabel, dan dengan nilai$sid
. Saya ingin Drupal tidak mengatur cookie di sini, alih-alih mengirim nilai variabel ke server SSO. - Server SSO akan mengambil nilai, membuat cookie, dan meletakkannya di domain utama
domain.com
(untuk mengingatkan keduanyamy website
dansso server
berada di sub domain dari domain utama, yang juga tidak dalam Drupal). Kemudian, situs drupal dapat login dengan menggunakan cookie itu.
Saya tahu ini adalah pertanyaan yang sulit, saya hanya mencari petunjuk bagaimana saya harus mulai? seperti yang mereka katakan "Anda tidak harus meretas inti". Jadi, pertanyaan saya adalah:
- Di mana saya harus mencari untuk memahami bagaimana otentikasi Drupal dan manajemen sesi bekerja secara mendalam?
- Apakah ada cara di mana saya bisa memanggil fungsi dalam
includes/session.inc
menggunakan kait (seperti komentar dengan fungsi mengatakan "hanya untuk penggunaan internal / tidak untuk dimodifikasi")?
CATATAN: Saya akan menggunakan metode yang sama untuk mendaftarkan pengguna, sehingga catatan tetap berada di basis data pusat server SSO. Dan selama itu akan dimasukkan beberapa kata sandi sampah untuk pengguna yang sama di basis data situs Drupal (karena kata sandi tidak akan diperiksa saat masuk).