0

jqueryで基本認証を使用する方法を理解していますが、それは私の問題ではありません。

これが私が持っている構造です:

Webサイト(カスタムメンバーシッププロバイダーによるフォーム認証を備えたMVC.net 4)Webサービス(Web API)

MVC.net Webサイトは、Webサービスを呼び出して認証を行い、ログインのためにフォーム認証を実行します。

次に、各ページはSPAの原則を使用してデータを取得します。サーバーは基本的なHTML処理のみを実行します。

したがって、サービス呼び出しを行うには、何らかの方法でjqueryにクレデンシャルを取得する必要があります。

問題は、パスワードが保存されないことです。ハッシュのみ。パスワードをセッションに入れて使用するページに渡すことは問題ありませんが(これが発生し、サービスが停止される場合はすべてSSLが使用されます)、ユーザーがパスワードを入力していることを前提としています。

もちろん、ユーザーは「私を覚えている」を選択できるので、そのような場合にユーザーにログインを求められることはないので、私はパスワードを持っていません。

誰かがこれを達成する方法について何か(安全な)提案がありますか?jqueryが使用するパスワードをどこに安全に保存できますか?

ありがとう!

4

1 に答える 1

0

これに役立つと私が見つけた3つの解決策があります:

  1. 2つのサイト間でフォーム認証情報を共有します。これは、マシンキー情報を同じCookie名などで共有するように設定した場合に機能します。注:これは、ドメイン/サブドメインでのみ機能します。第3レベルドメインでは機能しません。

  2. OAuthを使用してトークンを取得し、それをページと共有して、jqueryがそれにアクセスし、適切に渡すことができるようにします。これには、トークンがHTMLに表示されている必要があります。渡され、oauthリクエストのフィドラーなどに表示されることを考えると、これはそれほど安全ではありませんが...

  3. Webサイト固有のl/pでログインし、ユーザーを検証して、有効期限が設定されているサーバーからランダムに生成されたGUIDまたは同様のトークンを取得します。これをすべてのページのソースに入れてください。次に、jqueryはこれをAuthenticationヘッダーとして渡すことができ、トークンが期限切れにならない期間(スライドしている可能性があります)の間、そのユーザーに対して機能します。これはOAuthと非常に似ていますが、oauthの外部で機能して、サイトに異なるルールを設定します。明らかに、トークンは#2ごとに引き続き表示されます。

現在、Basic(サービスがssledであるため)とOAuthをサポートしています。Webサイトはフォーム認証を使用しているため、APIサーバーでもフォーム認証を有効にし、フォーム認証に共有トークンを使用してjqueryの認証を行うことを選択しました。このパスを選択した理由は、OAuthを使用した場合、トークンはすべてのリクエストでページのソースに表示されていたためです。これは必ずしも悪いことではありませんが、あなたが不在のときに誰かがあなたのコンピュータに来て、表示を行ってからリクエストを偽造できない限り、フォーム認証が利用可能であるため、それがなくてもそれを実現するための最良の方法であると感じましたクライアント側で何かを公開します。

これでセキュリティ上のリスクが発生した場合はお知らせください。私は1つを見ることができず、他の誰も私がオンラインで見つけることができるものからフォーム認証を共有することに関する問題を見ているようには見えません!これは安全でなければなりません。

于 2012-11-14T22:05:38.423 に答える