2017-01-05 3 views
0

Meteorで作成されたアカウントパスワードで作成され、DBに保存されたパスワードを使用して、サーバからユーザを認証しようとしています。ただし、パスワードは決して一致しません。私が間違っていることは何ですか?Meteorによってパスワードが作成されたユーザ認証

var bcrypt = require('bcryptjs'); 
    var crypto = require('crypto'); 
    var raw_pass = 'my_pass'; 
    var pass = crypto.createHash('sha256').update(raw_pass).digest('hex');    
    var encryptedPassword = bcrypt.hashSync(pass, bcrypt.genSaltSync(10)); 
    bcrypt.compare(doc.services.password.bcrypt, encryptedPassword, function(err, result) { 
       if(result) { 
        console.log('OK'); 
       } 
       else { 
        console.log(403); 
       } 
      }); 

答えて

0

引数を比較確認することができます

は「プレーンな文字列」と「暗号化された文字列」です。だから、適切なソリューションは、次のとおりです。

var raw_pass = 'my_pass'; 
var pass-256 = crypto.createHash('sha256').update(raw_pass).digest('hex');    
bcrypt.compare(meteor.password, pass-256, function(err, result) { 
      if(result) { 
       console.log('OK'); 
      } 
      else { 
       console.log(403); 
      } 
     }); 
+0

この方法では動作しません。 meteor bcryptとsaltを使用して(デフォルトでは10)、平文の後にパスワードを生成します.pwdはsha256で暗号化されます。 https://github.com/meteor/meteor/blob/devel/packages/accounts-password/password_server.js –

0

bcrypt.compareの出力を印刷すると役立ちます。 成功を意味する0を返している可能性がありますが、if文では0がfalseと解釈されます。

+0

結果が「偽」(ブール値)は常にあるが、次のように1を生成流星に対するプレーンパスワードをチェックするための正しい方法はSHA256とbcryptのを使用することです正しい/間違ったパスワードに関係なく。 –

+0

doc.services.password.bcryptとは何ですか? 「合格」ではないでしょうか? –

+0

混乱して申し訳ありません。 Meteorがサービス/パスワード/ bcryptに格納したDBのパスワードです。 –

0

アカウントパスワードはパスワードに暗号を使用しません。 暗号化されたパスワードを生成するのはbcryptとsaltのみです。あなたがパスワードをbcrypt.compareためhere

+0

私はそれが本当だとは思わない。 //データベースに格納するためにパスワードをハッシュするには、bcryptを使用します。 // 'password'は文字列(この場合は、 // bcryptの前にSHA256を実行します)またはプロパティー' digest'と // 'algorithm'(この場合はパスワードをbcryptします。ダイジェスト)。 // –

+0

はいあなたは正しく気になります.https://github.com/meteor/accounts/blob/77b6084c0bd24129c1e7a6d703d9effddaceadcb/packages/accounts-password/password_client.js#L65 –

+0

はい。それはrsa 256とダイジェストを使用しています。 –

0

var bcrypt = require('bcrypt') 
var sha256 = require('sha256') 
const samePassword = bcrypt.compareSync(
         sha256(plainTextPassword), 
         user.services.password.bcrypt 
        ) 
関連する問題