Ho un requisito in cui, devo sostituire l'autenticazione utente predefinita con l'autenticazione di un server centrale, cioè un server SSO.
Con il debug di Drupal sono venuto a sapere che tutta la gestione della sessione avviene in includes/session.incarchivio. Voglio fare l'autenticazione come mostrato nell'immagine:

SCENARIO: Login
I dettagli dei passaggi sarebbero:
- Sostituisci il modulo di accesso per inviare il nome utente e la password al server SSO ( non su Drupal , ma su .NET).
- Autenticare l'utente sul server SSO utilizzando il database di quel sito; e rispondi a una pagina PHP personalizzata del mio sito Web (o a un modulo di un modulo?).
- Utilizzando la risposta, identifica l'utente nella tabella degli utenti e crea una sessione per quell'utente senza controllare la password (poiché ciò significherebbe una doppia autenticazione). Per impostazione predefinita, Drupal imposta un cookie con nome di
$insecure_session_namevariabile e con valore$sid. Voglio che Drupal non imposti il cookie qui, invece invii i valori delle variabili al server SSO. - Il server SSO prenderà i valori, creerà un cookie e lo rilascerà nel dominio principale
domain.com(per ricordare entrambimy websitee sisso servertrovano sul sottodominio del dominio principale, che anche in non in Drupal). Quindi, il sito drupal può accedere utilizzando quel cookie.
So che è una domanda difficile, sto solo cercando suggerimenti su come dovrei iniziare? come si suol dire "non dovresti hackerare il nucleo". Quindi, le mie domande sono:
- Dove devo cercare per capire in che modo l'autenticazione Drupal e la gestione delle sessioni funzionano in modo approfondito?
- C'è un modo in cui potrei chiamare le funzioni
includes/session.incusando gli hook (come dicono i commenti con le funzioni "solo per uso interno / da non modificare")?
NOTA: userò lo stesso metodo per registrare l'utente, in modo che il record rimanga nel database centrale del server SSO. E durante ciò inserirà una password indesiderata per lo stesso utente nel database del sito Drupal (poiché la password non verrà controllata durante l'accesso).