私は多くの REST API 認証スレッドを読み、すべてがどのように機能するかをまとめようとしました。「HTTP基本/ダイジェスト認証とそれに関連付けられたHTTPヘッダーを使用するだけで、毎回ユーザーパスワードを送信する」と「URLに対して1回認証し、トークンを取得して保存し、それぞれで送信する」という2つの主な陣営があるようですリクエスト。' 誰もがセッションを使用せず、HTTPS を使用することに同意します。
ユーザーがログインしたらブラウザーで認証され、API に対して個別に認証する必要がないようにしたいだけです。ほとんどの場合、Web サービスを検索などに自由にアクセスできるようにし、一部の場所での作成/編集/削除操作の認証のみを必要とします。フロントエンドは単なるユーザーのブラウザーであり、サービスは ajax 呼び出しを介して呼び出されます。
私の質問は次のとおりです。
サイトで既にフォーム認証を使用している場合、HTTP 認証ヘッダーもどのように設定するのが最善でしょうか? APIに対しても認証して保存するように、ログインフォームに少しのjQuery(この受け入れられた回答Sending basic authentication information via formなど)にタグを付ける必要がありますか。つまり、基本的には /api/authenticate セクションを設定するだけですHTTP 認証の詳細をチェックして、ブラウザに保存されます。
トークンを取得し、ユーザーの代わりにそれを送信する/すべてのリクエストを渡す場合、どこに保存しますか? 誰もが Cookie を使用しないと言っていますが、そのようなものを保存できるブラウザが他にあるでしょうか? キーリングを持っているスマートデバイスや、それを保存する場所があるアプリケーションでは理解できますが、ブラウザでは理解できません
私が見た他のオプションは、基本的にWebアプリを作成し、ユーザーに代わってAPIへのリクエストを送信することです(フォームで通常どおり認証し、WebアプリがAPI呼び出しを行い、ユーザーを送信しますユーザーから直接取得するのではなく、保存できる資格情報自体)。これは、問題を回避するための余分な作業のように思えます。これは、完全に RESTful ではないと判断した場合にセッションでうまく回避でき、認証の詳細も保存する必要があります。
この目的とセッションの使用にはあまり適していないため、完全に安らかになることを気にしない方がよいでしょうか? とても簡単に思えます。