もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

symfonyのパスワードのアルゴリズムを指定する

はじめに

こんばんは。

今回はsymfonyの備忘録です。

symfonyのユーザーなどのパスワードのアルゴリズムをしたいということがありましたので、残しておきます。

本題

めちゃめちゃかんたんで security.yaml に記載するだけです。

security:
    password_hashers:
        App\Entity\User:
            algorithm: xxxx   ← ここ

symfony.com

アルゴリズムEncoderFactory を確認すると、 auto 以外にも特定のアルゴリズムを設定できます。

例えば、 plaintextbcrypt です。

基本的に auto でも問題ないと思いますが、もし、ローカルと本番環境等でもしインストールされている拡張機能に差異があると auto だとうまく行かない場合があります

例えば 管理用のスーパユーザーをfixtureで登録する場合とかになります。

auto に設定している状態で sodium が入っている場合 、 EncoderFactoryにて SodiumPasswordEncoder.phpが選択されます。

そしてsodiumを使用してハッシュ化したパスワードが生成されます。

そしてその fixtureを sodiumが入っていない 環境で loadします。

そうするとそのユーザーでログインする場合、 sodiumが入っていないので NativePasswordEncoder.phpが選択されて、結果パスワードが合わなくなります。

終わりに

そもそも、環境差異があるって時点でアウトですが、今回はGAE + CloudSQLの環境で起きました。。。

CloudSQLにfixtureを読み込ませるさい、proxyを使ってローカルから入れる事ができたのですが、そのさいこの環境差分が起きました。

GAEのphp環境は インストール済みの拡張機能にも、動的追加可能な拡張機能にも sodiumがなかったので、ハマってしまいました。

かんたんですが、以上です。