Burada, varsayılan kullanıcı kimlik doğrulamasını merkezi bir sunucunun kimlik doğrulamasıyla değiştirmek zorunda kaldım, yani SSO sunucusu.
Drupal'da hata ayıklayarak tüm oturum yönetiminin includes/session.inc
dosyada olduğunu öğrendim . Resimde gösterildiği gibi kimlik doğrulaması yapmak istiyorum:
SENARYO: Giriş
Adımların detayları:
- Kullanıcı adını ve parolayı SSO sunucusuna göndermek için giriş formunu değiştirin ( Drupal'da değil, .NET'te).
- Bu sitenin veritabanını kullanarak TOA sunucusundaki kullanıcının kimliğini doğrulayın; ve web sitemin bazı özel PHP sayfalarına (veya bir modülün formuna mı?) yanıt gönderebilirim .
- Yanıtı kullanarak, kullanıcı tablosunda kullanıcıyı tanımlayın ve parolayı denetlemeden bu kullanıcı için bir oturum oluşturun (çift kimlik doğrulaması anlamına gelir). Varsayılan olarak, Drupal
$insecure_session_name
değişken adı ve değeri olan bir çerez ayarlar$sid
. Drupal'ın burada çerezi ayarlamamasını, değişkenlerin değerlerini TOA sunucusuna göndermesini istiyorum. - TOA sunucusu değerleri alır, bir çerez oluşturur ve ana etki alanına
domain.com
bırakır (her ikisini de hatırlatmakmy website
vesso server
Drupal'da olmayan ana etki alanının alt etki alanındadır). Ardından, drupal sitesi bu çerezi kullanarak giriş yapabilir.
Zor bir soru olduğunu biliyorum, nasıl başlamam gerektiğine dair işaretçiler arıyorum. dedikleri gibi "çekirdeği hacklememelisin". Yani, sorularım:
- Drupal kimlik doğrulaması ve oturum yönetiminin nasıl çalıştığını anlamak için nereyi aramalıyım?
includes/session.inc
Kancaları kullanırken işlevleri çağırabileceğim bir yol var mı (işlevlerle ilgili yorumların "yalnızca dahili kullanım için / değiştirilmemesi" dediği gibi)?
NOT: Kaydı SSO sunucusunun merkezi veritabanında kalması için kullanıcıyı kaydetmek için aynı yöntemi kullanacağım. Ve bu sırada Drupal sitesinin veritabanında aynı kullanıcı için bazı önemsiz parolalar koyacaktır (giriş sırasında parola kontrol edilmeyeceğinden).