4

これはおそらく最も基本的な質問であり、何らかの理由でですが、私は少し唖然としています。複数のページがあるRESTfulサービスを設計しています。デフォルトでリンクをクリックすると、HTTPGETが発生します

getリクエストで認証データを送信するにはどうすればよいですか?それはURLの一部である必要がありますか?暗号化されたクエリパラメータを使用して醜いURLを作成する必要があります。これを回避する方法はありますか?

javascript / jqueryに、いわば「内部」でこのデータを送信できるものはありますか?

JQueryでは、$.ajaxメソッドはusername, password引数を取り、承認データをajax呼び出しと一緒に送信できるようにします。非ajax呼び出しに相当するものはありますか、それともURLだけが残っていますか?

このアプローチの理由:

  • ユーザーが「戻るボタン」をクリックして前のページに戻ることができるようにしたいと思います。$.get承認でを実行し、それに従うと、$('html').replaceWith(result)戻るボタンが無効になりますよね?(つまり、何も表示しない)

これはおそらくREST101であるはずですが、何らかの理由で私は追い詰められました

(参考:テクノロジー:Jquery / javascript / Restlet / Freemarker)

(追記:最後の手段としてのクッキー。それとも最良の方法ですか?:)

4

1 に答える 1

2

GETリクエストでは、リクエストヘッダーとリクエストのクエリ文字列/URLに制限されます。HMACアプローチまたはOAUTHを使用できます。この場合、各リクエストは「署名済み」です。これを純粋にクライアント側で行っている場合、共有秘密がもはや秘密ではないという問題があります。

もちろん、ユーザー名とパスワードを使用してPOSTリクエストを既に行っているようです(これは非常にお勧めしませんが、ところで)

HMACの実際の例が必要な場合、AmazonはS3との対話にHMACを使用している(または使用した)と思います。そのため、サンプルコードがたくさんあります。

最終的に、パスワードや秘密鍵/トークンなどの「秘密」情報を開示せずに、Webクライアントにステートレス認証を実行させることは非常に困難です。一時トークンをユーザーに発行し、リクエストヘッダー(IPアドレスなど)がトークンの存続期間を通じて一貫していることを検証することでバックアップできます。一時的なトークンをクライアントに開示する場合は、認証メカニズムにリクエストごとに一意のナンスも含める必要があります。

Webクライアントに要求を実行させたい場合、純粋にステートレスなRESTful認証は重要なので、REST101とは呼びません:)

于 2011-08-16T20:15:27.587 に答える