LoginSignup
1
1

More than 3 years have passed since last update.

PHPからdjangoのユーザ認証

Posted at

djangoのパスワード

PHPからdjangoのユーザ認証する方法を検討した。

参考資料

djangoはどのようにパスワードを保存しているか

djangoのデータベースは既定ではdb.sqlite3。sqlite3コマンドで中身を確認する。

$ sqlite3 db.sqlite3
sqlite> .tables

パスワードの入っているテーブルはauth_user。データベースのフィールド名を確認するためヘッダを表示する。

sqlite> .header on

ユーザを表示してみる。

sqlite> select * from auth_user

ユーザ名はusername,パスワードはpasswordに入っている。SQLで特定のユーザのパスワードを表示する。例えばjoeのパスワードは取り出すには,次のようにする。

sqlite> select password from auth_user where username==’joe’

パスワードは次の形式で保管されている。

アルゴリズム$繰り返し数$ソルト$ハッシュ値

django 2.2時点で既定のアルゴリズムはpbkdf2のsha256(pbkf2_sha256),繰り返し数は150000。ハッシュ値はbase64エンコードされている。

PHPでパスワードからハッシュ値を生成するには,hash_pbkdf2()とbase64_encode()を使う。

$hash = base64_encode(hash_pbkdf2(“sha256”, $password, $salt, $iterations, 0, true));

データベースで取得したハッシュ値と$hashを比較すればよい。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1