43

シンプルな REST 風の HTTP API を公開する小さなアプリケーションを作成しています。承認の欠如による失敗を通知する方法を決定しようとして立ち往生しています。

アプリには認証用の API がありませんが、代わりに、クライアントが別のサービスを介して取得したセッション トークンを含む Cookie の存在に依存します。アプリはセッションを検証し、検証プロセスで取得した ID を使用してアプリ固有の承認を実行します。クライアントがこのアプリに対して直接認証する方法はありません。

私の問題は、不正なリクエストを拒否するための明らかな HTTP ステータス コード「401 Unauthorized」が、「WWW-Authenticate」ヘッダーに関して指定されていることです。rfc2616 秒 10.4.2を参照してください。

応答には、要求されたリソースに適用可能なチャレンジを含む WWW-Authenticate ヘッダー フィールド (セクション 14.47) を含める必要があります。

これがまれな問題だとは信じられません。より一般的な用途を含めるために 401 を単純にオーバーロードするのは一般的ですか? ブラウザーが auth/e ダイアログをポップアップ表示する場合はどうですか (ちなみに、これは私のテストでは見られなかったので、POST では発生しない可能性があります)。

結論: このコンテキストで 401 を使用しても問題ありませんか、それともより良い解決策がありますか?

4

2 に答える 2

42

通常、クライアントが認証して問題を解決できる場合は 401 を送信しますが、API で認証する方法を提供していないため、代わりに 403 エラー (禁止) を返すことをお勧めします。これはヘッダーを必要とせず、サービスにアクセスできないことをクライアントに示します。

于 2009-10-24T18:58:54.423 に答える
10

次のようなものを返します。

HTTP/1.1 401 Unauthorized
Location: https://example.com/auth-app/login
于 2009-10-24T18:57:58.557 に答える