Webアプリケーションにデータを提供するRESTfulサービスを作成しています。これに関して2つの関連する質問があります。
次のコードでリクエストに応答するつもりです。
これは、RESTfulサービスが動作するための推奨される方法ですか?
WWW-Authenticate
ヘッダーは401応答で提供する必要がありますか?Wikipedia (おそらく最も正確なリソースではないが、私にとってはうまくいく)で、401応答mustにWWW-Authenticate
ヘッダー、しかし、さらに検索してみると、この値が何を意味し、何をすべきかを述べたリソースを実際に見つけることができませんでした。
このヘッダーに関するいくつかのSO質問とフォーラムトピックを見つけましたが、それらはすべてOAuthについてのものであるように見えます。
このヘッダーに含まれる正しい値は何ですか?
質問に答えるには:
不正なリクエストの処理方法
あなたがそれを説明した方法は、RESTfulサービスのためにかなり推奨される方法です。私の知る限り、それはまったく悪いことではありません。
401応答が提供するWWW-Authenticateヘッダーは何ですか?
一般的に、WWW-Authenticate
ヘッダーは、サーバーが受け入れる認証の種類をクライアントに伝えます。クライアントが無許可のリクエストを行った場合、つまりAuthorization
ヘッダーが欠落しているか無効なリクエストを送信している場合、サーバーはWWW-Authenticate
クライアントに、どの認証スキーム(つまり、Basic、Digest、またはOAuth)を受け入れるか、およびどのレルムについて伝えるか。
サーバー側でのある種の識別質問またはチャレンジ、つまり「あなたは誰ですか?」のようなものを想像してください。または「次の方法で資格情報を提供して、あなたが誰であるかを証明してください!」。
例えば: WWW-Authenticate: Basic realm="My App"
ここで、サーバーは、Basicという名前の認証スキームを使用していることをクライアントに伝えます。レルムは、サーバー上の保護されたスペースを識別する文字列にすぎません。
私の調査(グーグル)に基づいて、Newauth realm = "use login token"を送信することにしました。
Webサイト http://greenbytes.de/tech/tc/httpauth/#unknown にさまざまな認証方法のテストケースがあり、「認証トークンの取得」を説明するものが見つからなかったため、それは「Newauth」です。
私にとっても重要です:これは、クライアント側でログインプロンプトを作成しません。