2009-04-11 7 views
2

私は、メンバーが自分のアカウント(FormsAuth)にログインするサイトを持っています。 jQueryを使用してアクセスできるRESTfulなサービスを設定したいと思います。私は同じFormsAuthを使用してこれらのサービスを保護したいと思います。JQueryで保護されたRESTエンドポイントにアクセスする

サードパーティのサイトでは、これらのサービスにどのようにアクセスできますか?彼らは、プリンシパル/アイデンティティをサービスに渡す必要がありますか?

私は基本認証(Twitterが使用し、jQueryがサポートする)の例しか見ていません。

私はWCT/RESTの新機能ですから、どうすればいいのかよく分かりません。

答えて

2

覚えておくべき大きな点は、フォーム認証がCookieに基づいて動作することです。クライアントブラウザがサーバーに要求を送信すると、要求ごとにCookieが送信されます。サーバーが特定のCookieを必要とする場合(ASP.NETは特定のURLで認証を実施する場合にこれを要求します)、Cookieはそこには存在しません。これは、不正なエラーが発生したときです。

jQueryコードを取得するには、クライアントがホストページからリクエストする必要があります。ホストページはフォーム認証で保護されたASP.NETページである必要があります。これがjQueryコード自体へのアクセスを確保する最初のステップです。次に行うべきことは、RESTfulなエンドポイントへの安全なアクセスです。

Web.config設定でフォーム認証によって保護されているアプリケーションの一部と同じディレクトリに.svcエンドポイント(IISでRESTful WCFサービスをホストしていると仮定)を配置すると、ASP.NET要求についてWCFに通知される前に.svcエンドポイントへの要求を拒否します。このようにして、サービス内で複雑なコーディングを行うことなく、フォーム認証でWCFサービスをラップすることができます。

jQueryは、エンドポイントのHTTP要求をブラウザのコンテキスト内で行うため、jQueryからのHTTP要求(フォームの認証済みサイトと同じルートからロードされている限り)認証Cookieが含まれています。

0

あなたはそれを複雑にしてトークンを使用することができます。 Flickrは、このような認証メカニズムの例です。

理論的には、トークンは長い間有効であり、リクエストなどでそれを渡します。しかし、それは非常にリーズではありませんが(IMHO)。しかし、基本的には、トークンを返すメソッドと、(他のアプリケーションが覚えておく)日付を返すメソッドを用意し、期限が切れるまで新しいトークンを要求する必要があるときにトークンを使用します。

関連する問題