0

JQuery ウィジェット(特にJQGrid )を Rails 3 アプリケーションで使用しようとしています。私は ruby​​-openid を使用して Google で認証を行い、Seth Ladd の素晴らしいレシピを使用してそれを機能させました。

それは何をしますか-ウェブフォームからのページビューと投稿。

ただし、JQGrid がサーバー上のデータを更新するために POST を実行すると、次の 2 つのことが発生します。

  1. ユーザーのブラウザーが Google へのログインによって既に認証されている場合でも、POST は認証されていないブラウザーから送信されたかのようにサーバーに表示され、OpenID 認証ダンスにリダイレクトされます。それはそれを除いてショーストッパーではありません

  2. サーバーがリダイレクトと認証を開始するはずの 401 を返すとすぐに、エンチラーダ全体が停止します。通常 (たとえば、フォーム送信からの POST 要求のように)、ブラウザーは 401 を認識し、同封の「ここで認証」情報を読み取り、ダンスを行い、セッションがセットアップされて戻ってきて、サイクルが続きます。しかし、JQuery/JQGrid からは...それほど多くはありません。

何か案は?ここで明らかな何かが欠けていると確信していますが、ラムズフェルドの「未知の未知」の 1 つが進行中です。何が欠けているのか、ましてやそれを修正する方法がわかりません! これは長い間解決されてきた問題のようですね。

私は XSS 防御に違反している可能性がありますが、もしそうなら、* *- OpenID ですでに行った深刻な投資 (既にサインアップしているユーザーとパスワードを提供/記憶する必要があるユーザーを含む) を無効にする以外の方法がわかりません。 - くそっ!)。

事前に感謝します、私の専門家の同僚。

(Rails 3.0.7、ruby-openid 2.1.8、JQGrid 3.5.3、JQuery 1.3.2、Google を OP として使用するため、ユーザーは ID URL を入力する必要がありません。)

4

1 に答える 1

0

OK、さらにテストしたところ、それがラップであることが確認されました。

もちろん、次に Javascript を protect_from_forgery で動作させる方法を理解する必要がありましたが、それは本当に簡単であることがわかりました。http://henrik.nyh で詳しく説明されているように、認証トークンを取得してすべての Ajax リクエストに含めるだけです。 se/2008/05/rails-authenticity-token-with-jquery . このテクニックはトークンをすべてのものに自動的に組み込むため、すべての POST リクエストを探しに行く必要はありません。

オレグ、助けてくれてありがとう。そして、私はあなたのアドバイスを受け入れます。

OpenID Codeメーリング リストの Sante にも感謝します。

于 2012-05-30T22:16:59.267 に答える