2012-10-06 22 views
7

私のウェブサイトのさまざまなアプリにユニバーサルなログインがあることは、驚くべきことです。今のところ、私はMagentoの店頭とIPSボードのコミュニティを持っています。そして、私はそれらをユーザーのために1つのユニバーサルログインに統合しようとしています。Magentoのパスワードはどこに保存されていますか?

IPSボードにはさまざまなログイン方法が用意されています。そのうちの1つは外部データベースで、ユーザーの詳細については外部データベースと統合できます。

素晴らしい!だから、IPSとMagentoのデータベースをリンクさせて、統一されたユーザー資格情報を得ることができます。

しかし、これまでのところ私はcustomer_entity.emailというメールフィールドしか見つけることができません。

私の質問は以下のとおりです。

  1. パスワードハッシュフィールド(table.field)はMagentoの中では何ですか?
  2. Magentoはパスワードハッシュをどのように生成しますか? MD5? SHA1?塩は何ですか(私はそれがインストールによって異なると思いますが、どこで見つけることができますか?)

あなたは添付の画像から見ることができるように、私はどこで、どのようにMagentoのは、ユーザーのログインの詳細について、外部データベースとしてのMagentoのデータベースを使用するようにIPSを有効にするためにパスワードを保存するの詳細を必要とします。添付

enter image description here

enter image description here

これを成し遂げる方法上の任意のアイデアや提案をいただければ幸いです!

+0

良い説明はhttp://www.magentogarden.com/blog/how-are-passwords-encrypted-in-magento.htmlにあります。 – pevik

答えて

8

お客様のパスワードはcustomer_entity_varcharに保存されています。これはeav属性です。 IPB外部データベース機能は使用できません。コード内の顧客を認証するには、Mage::getModel('customer/customer')->authenticate($logi, $password);を使用する必要があります。

+1

最も簡単な方法は、magentoイベントcustomer_customer_authenticatedとcustomer_register_successを使用してログイン/登録アクションをフックし、IPBからカスタムクエリを追加することです。 autoloadを使用してIPBのAPIを使用することも、カスタムモデルを作成してbosrdのデータベースにデータを転送することもできます。別の方法は、すべてのシステムに対して1つのユーザーエンティティを持つ複雑なデータベースログインシステムを作成することです。どのような方法でも標準的な統合ツールはあまり役に立たないでしょう。デフォルトでパスワードはmd5( 'saltpassword')として生成されます。 ':salt'はCE版です。塩は2つのランダムな英数字です。 –

3

暗号化キーは/app/etc/local.xmlにあります。私はユーザーのテーブルを見ていないが、私の推測では、ハッシュフィールドは暗号化されたパスワードです。

暗号化機能は、あなたのIPSボードからMagentoのへのアクセスを得ることができれば、あなたはに似た何かができるのでMage_Core_Model_Encryptionである:

$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); 

最高でこのロジックを置くためにどこに出て作業する必要がありますそれを統合するためには、少なくともそれはスタートです。

+2

お客様のパスワードはハッシュされているので解読できません(デフォルトではmd5 CEではSHA1、EEではSHA1)。暗号化キーは、注文、APIキー、および第3部分の統合パスワードの重要なデータを暗号化するために使用されます。 –

関連する問題