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.inc
archivio. 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_name
variabile 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 website
e sisso server
trovano 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.inc
usando 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).