J'ai une exigence où, je dois remplacer l'authentification utilisateur par défaut par l'authentification d'un serveur central, c'est-à-dire un serveur SSO.
En déboguant Drupal, j'ai appris que toute la gestion des sessions se faisait en includes/session.inc
fichier. Je veux faire l'authentification comme indiqué dans l'image:
SCÉNARIO: Connexion
Les détails des étapes seraient:
- Remplacez le formulaire de connexion pour soumettre le nom d'utilisateur et le mot de passe au serveur SSO ( pas sur Drupal , mais sur .NET).
- Authentifier l'utilisateur sur le serveur SSO en utilisant la base de données de ce site; et envoyer une réponse à une page PHP personnalisée de mon site Web (ou un formulaire par un module?).
- À l'aide de la réponse, identifiez l'utilisateur dans le tableau des utilisateurs et créez une session pour cet utilisateur sans vérifier le mot de passe (car cela signifierait une double authentification). Par défaut, Drupal définit un cookie avec un nom de
$insecure_session_name
variable et une valeur$sid
. Je veux que Drupal ne place pas le cookie ici, envoie plutôt les valeurs des variables au serveur SSO. - Le serveur SSO prendra les valeurs, créera un cookie et le déposera dans le domaine principal
domain.com
(pour rappeler les deuxmy website
et sesso server
trouve sur le sous-domaine du domaine principal, qui n'est pas non plus dans Drupal). Ensuite, le site drupal peut se connecter en utilisant ce cookie.
Je sais que c'est une question difficile, je cherche juste des conseils sur la façon de commencer? comme ils disent "vous ne devriez pas pirater le noyau". Donc, mes questions sont:
- Où dois-je chercher pour comprendre comment l'authentification Drupal et la gestion de session fonctionnent en profondeur?
- Existe-t-il un moyen d'appeler les fonctions en
includes/session.inc
utilisant des hooks (comme le dit le commentaire avec les fonctions "pour usage interne uniquement / à ne pas modifier")?
REMARQUE: je vais utiliser la même méthode pour enregistrer l'utilisateur, afin que l'enregistrement reste dans la base de données centrale du serveur SSO. Et pendant cela, un mot de passe indésirable sera inséré pour le même utilisateur dans la base de données du site Drupal (car le mot de passe ne sera pas vérifié lors de la connexion).