2012-10-06 18 views
7

Sarebbe una grande esperienza utente benedire per avere un accesso universale attraverso varie applicazioni del mio sito web. Per ora, ho una vetrina di Magento e una comunità di schede IPS. E sto cercando di integrarli in un unico accesso universale per i miei utenti.Dove e in che modo le password vengono archiviate in Magento?

La scheda IPS offre una varietà di metodi di accesso e uno di questi è External Database che consente di integrarlo con un database esterno per i dettagli dell'utente.

Fantastico! Quindi posso collegare l'IPS al database di Magento per le credenziali utente unificate.

Tuttavia, finora posso solo trovare il campo di posta elettronica che è customer_entity.email.

Le mie domande sono:

  1. Qual è il campo della password hash (table.field) in Magento?
  2. In che modo Magento genera l'hash della password? MD5? SHA1? Qual è il sale (immagino sia diverso per installazione ma dove lo trovo)?

Come si può vedere dalle immagini allegate, ho bisogno dei dettagli su dove e come Magento memorizza la password per consentire IPS da usare database di Magento come database esterno per i dettagli di login utente.

Attached:

enter image description here

enter image description here

qualsiasi idea o suggerimento su come ottenere questo fatto sarebbe molto apprezzato!

+0

Una bella spiegazione è in http://www.magentogarden.com/blog/how-are-passwords-encrypted-in-magento.html – pevik

risposta

8

La password del cliente è memorizzata in customer_entity_varchar, è un attributo eav. Non è possibile utilizzare la funzionalità del database esterno IPB. Dovresti usare Mage::getModel('customer/customer')->authenticate($logi, $password); per autenticare i clienti nel tuo codice.

+1

il modo più semplice è utilizzare gli eventi magento customer_customer_authenticated e customer_register_success per agganciare le azioni di accesso/registrazione e aggiungere query personalizzate da IPB. È possibile utilizzare il caricamento automatico per l'utilizzo dell'API IPB o semplicemente creare un modello personalizzato e trasferire i dati nel database del bosrd. Un altro modo è rendere complicato un unico sistema di accesso al database con un'entità utente per tutti i sistemi. In ogni caso, gli strumenti di integrazione standard non saranno di grande aiuto.Di default la password è generata come md5 ('saltpassword'). ': Salt' per la versione CE. Il sale è composto da 2 caratteri alfanumerici casuali. –

3

È possibile trovare la chiave di crittografia in /app/etc/local.xml. Non ho guardato la tabella degli utenti, ma la mia ipotesi sarebbe il campo hash è la password crittografata.

funzionalità di crittografia è in Mage_Core_Model_Encryption quindi se è possibile ottenere l'accesso a Magento dal vostro bordo IPS, si potrebbe fare qualcosa di simile a:

$password = 'whatever'; //your logic provides this password 

require_once('app/Mage.php'); //path to your Magento app/Mage.php 
Mage::app(); //we can now use magento functionality 

$decrypted = Mage::getModel('core/encryption')->decrypt($password); 

Avrete bisogno di capire dove meglio mettere in questa logica per integrarlo, ma è almeno un inizio.

+2

non sarà possibile decrittografare la password del cliente come hash (di default md5 in CE e SHA1 nelle versioni EE). La chiave di crittografia viene utilizzata per crittografare i dati significativi in ​​ordini, chiavi API e password di integrazione di terze parti. –

Problemi correlati