REST哲学の大部分は、APIを設計するときにHTTPプロトコルの可能な限り多くの標準機能を活用することです。その哲学を認証に適用すると、クライアントとサーバーはAPIの標準HTTP認証機能を利用します。
ログイン画面は、人間のユーザーのユースケースに最適です。ログイン画面にアクセスし、ユーザー/パスワードを入力し、Cookieを設定すると、クライアントは今後のすべてのリクエストでそのCookieを提供します。Webブラウザーを使用している人間は、個々のHTTP要求ごとにユーザーIDとパスワードを提供することは期待できません。
ただし、REST APIの場合、各リクエストに人間のユーザーに影響を与えることなくクレデンシャルを含めることができるため、ログイン画面とセッションCookieは厳密には必要ありません。また、クライアントがいつでも協力しない場合は、401
「許可されていない」応答を返すことができます。 RFC 2617は、HTTPでの認証サポートについて説明しています。
TLS(HTTPS)もオプションであり、相手の公開鍵を検証することにより、すべての要求でサーバーに対するクライアントの認証(およびその逆)を可能にします。さらに、これはボーナスのためにチャネルを保護します。もちろん、これを行うには、通信前のキーペア交換が必要です。(これは特にTLSでユーザーを識別/認証することに関するものです。TLS/ Diffie-Hellmanを使用してチャネルを保護することは、公開鍵でユーザーを識別しなくても、常に良い考えです。)
例:OAuthトークンが完全なログイン資格情報であるとします。クライアントがOAuthトークンを取得すると、リクエストごとに標準のHTTP認証でユーザーIDとして提供される可能性があります。サーバーは、最初の使用時にトークンを検証し、チェックの結果を、リクエストごとに更新される存続可能時間とともにキャッシュできます。認証が必要なリクエストは401
、提供されない場合は返されます。