認証を使用するために FOSUserBundle を使用して Symfony2 アプリケーションを構成していますhttp_digest
。これは Symfony 2.1.0-BETA2 です。
security.yml では、必要なプロパティhttp_basic
を切り替えてhttp_digest
追加するだけです。key
他のすべては同じままです。
動作する関連構成:
firewalls:
main:
pattern: ^/
anonymous: ~
form_login: false
provider: fos_user_bundle
http_basic:
realm: "Example Realm"
機能しない関連構成:
firewalls:
main:
pattern: ^/
anonymous: ~
form_login: false
provider: fos_user_bundle
http_digest:
realm: "Example Realm"
key: "%secret%"
ご覧のとおり、唯一の違いは の切り替えhttp_basic
ですhttp_digest
。key
プロパティの値を変更しても、違いはないように見えます。
in_memory プロバイダーを使用すると、問題なくhttp_digest
動作します。fos_user_bundle
この問題は、プロバイダーを使用する場合にのみ存在します。
機能するということは、を使用するときhttp_basic
に有効なユーザー資格情報が受け入れられることを意味します。同じ有効なユーザーの詳細を使用http_digest
すると、受け入れられず、ブラウザーのデフォルトの http 認証プロンプトが再表示されます。
セキュリティ構成の変更の合間に、dev と prod の両方のキャッシュをクリアし、ブラウザーのキャッシュを空にして、ブラウザーを閉じます。
構成に欠けている重要なものはありますか?
アップデート
http_basic の試行の成功と http_digest の試行の失敗をログに記録し、ログを比較しました。
両方のログは、Doctrine が認証に使用された SQL クエリをログに記録する場所まで同一です。
http_digest ログの認証クエリに続く行は次のとおりです。
security.DEBUG: Expected response: '3460e5c31b09d4e8872650838a0c0f1a' but received: '5debe5d0028f65ae292ffdea2616ac19'; is AuthenticationDao returning clear text passwords? [] []
security.INFO: exception 'Symfony\Component\Security\Core\Exception\BadCredentialsException' with message 'Incorrect response' in /home/jon/www/local.app.simplytestable.com/vendor/symfony/symfony/src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php:105
FOSUserBundle を使用するパスワードは、ソルト化およびハッシュ化されます。
この問題が私の設定ミスによるものなのか、FOSUserBundle のバグなのかを確認したいと思います。