2012-04-02 5 views
2

私は、両方ともSymfony2で書かれたREST APIとそのAPIのフロントエンドを持っています。このマニュアルに従って、私は(ハッシュされた)パスワード、塩などのバックエンドからの情報をもとに、フロントエンドのユーザーオブジェクトを作成するためのカスタム・ユーザー・プロバイダを書かれているフロントエンドでは
など
http://symfony.com/doc/current/cookbook/security/custom_provider.htmlハッシュされたパスワードを持つカスタムユーザープロバイダと、バックエンドAPIの基本である

しかし、ほとんどの私のAPIリクエストでは、HTTP Basic認証の資格情報が必要です。しかし、私が知る限り、ベーシックでは私は平文のパスワードが必要です。私はフロントエンド側にないが、私はちょうど私のカスタムユーザープロバイダのハッシュバージョンを持っています。

HTTPハッシュパスワードバージョンで何とかHTTPベーシックを使用できますか?私は後者を試してみた
または私は_usernameとフロントエンド上のログインフォームの_passwordフィールドを傍受、およびセッションに保存し(それが正しいかどうかわからないが、それは今のところそれを修正します)することができます

'login_check'の代わりに自分のURLにログインフォームをポストすることで_usernameと_passwordのフィールドを見ることができますが、その後、 '/ login-check'に転送してSymfony2に魔法をさせる必要があります。コントローラを見つけることができないので、これは失敗します(コントローラを設定せずにSf2がlogin_check呼び出しを傍受しますが、あなたがそれを使い始めたときにSf2がlogin_checkコールを傍受します。あなたはそれをサーバーに送信する前にパスワードをハッシュ化された場合は、

乾杯、

ディーター

+0

なぜバックエンドとフロントエンドに同じファイアウォールを使用しないのですか? – julesbou

+0

あなたは何を意味するかを詳しく説明できますか?私は私が続くとは思わない。両方のファイアウォールのケースは全く異なります。バックエンドの1つはHTTP基本認証で構成され、ステートレスですが、フロントエンドでは認証されていないため、HTTPベースではなくフォームによる認証が必要です。 – Dieter

答えて

0

を歓迎されるであろう、これはハッシュ化されたパスワードは、新しいパスワードになります。

HTTP基本認証は、RESTful認証方式として一般に使用されますが、ですが、SSLを超えている必要があります。セッションナンバーとして暗号ノンスを使用している場合は、すべての要求に対してこの値をSSL経由で渡す必要があります。そうしないと、OWASP A9に違反し、すべてのユーザーが侵害される可能性があります。

+0

これはバックエンドではなく、フロントエンドでハッシュすることを意味しますか?だから、例えばsha512をフロントエンドでハッシュし、それをバックエンドの 'plaintext'(実際にはsha512ハッシュ)として保存しますか? 確かに、元のソリューションを動作させることができます。 SSLに完全に同意すると、私はかなり大きなOwaspファンだから、私はそれを安全に保つために最善を尽くしています。 – Dieter

+0

@Dieterその後、RESTfulではないユーザーごとのサーバー側のstatを格納します。セッションID + sslを使用するよりも安全のためにRESTルールを破るならば、あなたはもっと安全です。 – rook

+0

私はバックエンドのデータベースに格納していますが、どうにかする必要があります;-) API側のセッション管理と同じように格納しません。 – Dieter

関連する問題