Single Sign On sta per autenticazione unica su più sistemi. Nel nostro caso con un unico login è possibile accedere a più installazioni di WordPress.
Capita infatti che ci si trovi a dover gestire più installazioni, per suddivedere sezioni dello stesso sito ad esempio. E si vorrebbe che gli utenti non debbano nè registrarsi più volte nè tantomeno loggarsi nuovamente su ogni installazione.
E’ da dire che per gestire più installazioni di WordPress ci sono anche altri sistemi, tra i quali WordPress MU, progetto degli stessi sviluppatori di WordPress, nato per consentire la gestione di un network di blog, oppure alcuni plugin per WordPress come WP Hive, che permette di gestire più blog che condividono file, plugin e temi.
Tuttavia se non avete intenzione di mettere su decine di blog ma unicamente di permettere agli utenti di accedere con un singolo login ai vostri blog ecco come fare.
Bisogna prima di ogni cosa procedere alle varie installazioni. Attenzione però. Tutte le installazioni devono essere fatte sullo stesso database. Per evitare di sovrascrivere le tabelle è necessario cambiarne il prefisso. Il file da modificare in questo caso è il file config.php
Alla riga
$table_prefix = ‘wp_’;
sostituiamo
$table_prefix = 'wp_';
per il blog X e
$table_prefix = 'wpy_';
per il blog Y e così via
Poi bisogna fare in modo che gli utenti del blog X siano gli stessi del blog Y e di tutti gli altri. Se creiamo un utente su X sarà automaticamente anche un utente di Y.
Sempre nel file config.php sotto la riga
/* That's all, stop editing! Happy blogging. */ aggiungiamo
define('CUSTOM_CAPABILITIES_PREFIX', 'wp_');
per fare in modo che un utente abbia gli stessi diritti in tutti i blog.
Apriamo poi il file wp-includes/capabilities.php di tutti i nostri blog, cerchiamo:
$this->cap_key = $wpdb->prefix . 'capabilities';
e sostituiamo con
if (defined ('CUSTOM_CAPABILITIES_PREFIX')) {
$this->cap_key = CUSTOM_CAPABILITIES_PREFIX . 'capabilities';
}
else { $this->cap_key = $wpdb->prefix . 'capabilities';
}
Affinchè i nostri blog condividano le stesse tabelle per la memorizzazione degli utenti, aggiungiamo sotto la riga /* That's all, stop editing! Happy blogging. */ nel file config.php del secondo blog e dei successivi le righe:
define ('WPLANG', '');
define('CUSTOM_USER_TABLE', 'wp_users');
define('CUSTOM_USER_META_TABLE', 'wp_usermeta');
A questo punto abbiamo degli utenti che possono accedere ai nostri blog con gli stessi username e password. WordPress riconosce l’ autenticazione di un utente attraverso i cookies. Per fare in modo che un utente loggato nel blog X sia riconosciuto come loggato anche in tutti gli altri blog occorre ancora qualche modifica.
Cosa importantissima è che le versioni siano le stesse. Poi inseriamo nel file config.php di tutte le versioni le righe:
define('AUTH_KEY', 'vostra_key_auth');
define('SECURE_AUTH_KEY', 'vostra_key_secure');
define('LOGGED_IN_KEY', 'vostra_key_logged');
define('NONCE_KEY', 'vostra_key_Nonce');
define('AUTH_SALT', 'vostra_key_salt');
define('USER_COOKIE', 'quello_che_vuoi_');
define('PASS_COOKIE', 'quello_che_vuoi_');
define('AUTH_COOKIE', 'quello_che_vuoi_');
define('SECURE_AUTH_COOKIE', 'quello_che_vuoi_');
define('LOGGED_IN_COOKIE', 'quello_che_vuoi_');
define('TEST_COOKIE', 'quello_che_vuoi');
A questo punto tutto dovrebbe funzionare. A me funziona tutto con WordPress 2.8, ma credo che vada bene anche per le versioni precedenti.
Altri articoli che potrebbero interessarti:
Trasferire WordPress su un nuovo server
Trasferire WordPress con le funzioni Importa/Esporta
Blogger editor free: Zoundry Raven








gioggione (4 comments)
Ciao …
ho provato a seguire quello che scrivi, ma non mi funziona.
Il cookie lo vede ma non mi passa la funzione: wp_validate_auth_cookie($_COOKIE[LOGGED_IN_COOKIE], ‘logged_in’);
Hai idee???
nemoprincess (186 comments)
Ciao,
le versioni utilizzate?
gioggione (4 comments)
Ciao 2.8.2 .. h continuato ad impazzire ed ho scoperto che è la funzione function wp_salt($scheme = ‘auth’) [pluggable.php: riga 1302] che chiama la wp_generate_password perchè mi da false questa condizione:
if ( defined(‘LOGGED_IN_SALT’) )
gioggione (4 comments)
Ho aggiunto nei file di configurazione:
define(‘AUTH_SALT’, ‘put your unique phrase here’);
define(‘LOGGED_IN_SALT’, ‘put your unique phrase here’);
define(‘SECURE_AUTH_SALT’, ‘put your unique phrase here’);
E a prima vista sembra che mi riconosca loggato da entrambe le installazioni … farò ulteriori test
…
nemoprincess (186 comments)
Ciao gioggione, ti ringrazio per aver condiviso…allora hai risolto ed è tutto testato anche per la 2.8.2?
gioggione (4 comments)
Ciao, è un po che non rispondo … problemi vari e non trovavo più quesot link
Devo riprendere in mano la cosa e devo dire che con la versione 2.8.2 andava bene a parte il fatto che nelle installazioni slave (non sapevo che nome dare alla 2°, 3° etc installazione) se tentavo di sloggare l’utente non me lo considerava, quindi o si ritoccano i template per mandare nella installazione “master” (la prima installazione di riferimento) o devo darci un occhio …
Comunque ora devo rifare il tutto con la versione 2.8.4.
PS sto anche testando wordpress mu (ho problemi alla installazione però) giusto per valutare pro e contro.
-FrA- (1 comments)
Io sto provando la guida sulla 2.9, ma ho dei problemi inaspettati. Tutto sembra funzionare, tranne che per il fatto che non riesco ad accedere alla pagina di amministrazione.
Il login è effettuato e funziona su tutti i blog, ma se provo and andare su wp-admin/ mi restituisce questo errore:
Non si dispone di permessi sufficienti per accedere a questa pagina.Idee? Ho ri-eseguito tutti i passaggi decine di volte, ma niente, sempre uguale…:(