RESTに関する多くのセッション/状態の議論を見て、具体的なものを何も見つけなかった後、私は追跡に切り込んで自分に問いかけます。
モバイルアプリのバックエンドとしてRESTful APIを開発しているとき、私は(私はそう思います)すべてのユーザー(未登録のユーザーも含む)をguestセッションで追跡したいと考えています。これにより、コンテンツをカスタマイズし、ユーザーの統計を行うことができます。
実装に関しては、UUIDのように、/ authenticateエンドポイントに対して、まるで電子メール/パスワードなしで、自分のアプリを識別させます。しかし、これにより、私のAPI全体が各リクエストで「セッショントークン」を期待できるようになります。
これは悪いアプローチですか、それとも同じですか?
通常のアプローチは、セッショントークンを提供できなかった場合、または無効なものを提供した場合に、ヘッダーまたはCookieを介してセッショントークンをクライアントに返すだけです。これは、どこかのページにいるときにセッションがタイムアウトする可能性があるWebクライアントでは特に必要です。これにより、「authenticate」エンドポイントに移動せずに、すぐにセッションを確立できます。エンドポイントは、その名前が示唆するとおりです。ユーザーを認証します。
もちろん、これはクライアントがセッショントークンの変更を期待するように設計されている必要があることを意味しますが、それはgoodのことです。特に特権の変更(つまり、ゲストからフルユーザーへの変更)でセッショントークンを再生成すると、セッションハイジャックを防ぐのに役立ちます。そして、あなたがWebページではなくモバイルアプリであるからといって、ハイジャックから安全だとは考えないでください。そうではありません。ハッカーはFiddlerやその他のプロキシを使用してモバイルAPIを傍受できます。