password_hashを使いハッシュ化したパスワードの認証で失敗しています。
構成上、パスワードのハッシュ化はサーバー群(A)にて行っており、そこでpassword_hashを使いハッシュ化したデータを別なサーバー群(B)に引き渡し、サーバー群(B)でpassword_verifyを使い検証しています。
しかし、同一サーバー上でハッシュ化および検証を行う場合は正常に動作しますが、異なるサーバ上で検証を行うと一致しません。
サーバー群(A)で行うハッシュ化は以下のとおりです。
※実際の$passwordStringは別な画面で入力されたものをユーザー毎に使用します
$passwordString = "password"; $passwordHash = password_hash($passwordString, PASSWORD_DEFAULT);
上記の$passwordHashをユーザー毎にサーバー群(B)に引き渡し、その後以下のように検証しています。
※実際の$_POST['password']はサーバー群(B)ロのグイン画面で入力されたものを使用します
$inputPasswordString = $_POST['password']; if(!password_verify($inputPasswordString, $passwordHash)){ throw new Exception("password error."); }
念のため、元のパスワード文字列と、ハッシュ化文字列をソース上に記述し検証しましたが、やはり異なる環境でハッシュ化されたものは、別サーバー上では検証に失敗しております。
password_hash及びpassword_verifyは同一環境上でなければ一致しないものなのでしょうか。
ドキュメントを読む限りはハッシュ化された情報上にsaltや暗号化ロジックを含み情報が入っており、環境に依存せず利用できるとの認識です。
なお、サーバー群(A)はPHP7系ですが、サーバー群(B)はPHP5系です。
これが影響しているのでしょうか?
回答5件
あなたの回答
tips
プレビュー