これは概念的な質問です。RESTfulログイン失敗:401またはカスタムレスポンスを返す
私はRESTful Webサービスに対するログインアクションをサポートする必要があるクライアント(モバイル)アプリケーションを持っています。 WebサービスはRESTfulなので、これはクライアントからのユーザー名/パスワードを受け取り、そのユーザー名/パスワードをサービスで確認した後、すべての後続の要求と共にそのユーザー名/パスワードを送信することを覚えています。
このWebサービスのその他の回答はすべてJSON形式で提供されています。
質問は、特定のユーザー名とパスワードが有効かどうかを調べるためにWebサービスに照会すると、Webサービスが常に成功または不成功を示すJSONデータで応答するか、良い資格情報と悪い資格情報のHTTP 401。
私が尋ねる理由は、資格情報が有効かどうかを尋ねているだけでも、他のいくつかのRESTfulサービスが悪い資格情報に対して401を使用しているということです。しかし、401応答の私の理解は、彼らがあなたが有効な資格情報なしでアクセスを持っていないと思われるリソースを表すことです。しかしログインリソースは、資格情報が有効かどうかを伝えることが目的であるため、誰でもアクセスできる必要があります(SHOULD)。
別の言い方をすれば、のような要求ように私には思える:悪い資格情報が提供されている場合
myservice.com/this/is/a/user/action
は401を返す必要があります。しかし、その特定のURL(要求)が有効な資格情報の有無に関係なく許可されているため、
myservice.com/are/these/credentials/valid
は決して401を返してはなりません。
私は、これについていくつかの正当な意見を聞きたいと思います。これを処理する標準的な方法は何ですか、そして、これを論理的に適切なものにする標準的な方法ですか?
リソースを返すことについてのあなたの意見は有効であると思われます。 401が適切な応答であると述べると、そこにいくつかの説明があります。私はあなたがここに含まれているように、HTTP仕様書を読んだことがありますが、私にはあなたの主張の直接的かつ明白な確認としては読めません。つまり、資格情報の有効性について尋ねる認証は必要ありませんが、あなたが含まれているのは「認証が必要な場合に特に使用する」ということです。 – Matt
あなたの見方は正しいです。アカウントオブジェクトを要求するために認証する必要はありません。しかし、資格情報の妥当性を尋ねるのではなく、特定のリソースのために、リソースを受け取るためには正常に認証する必要があります。認証が必要で、失敗したか、まだ提供されていないものが適用されます。あなたが提供する資格情報に基づいて – Cleric
私の意見はあいまいであると思います。アカウントのリソースが返された場合、私はあなたの同じページにいます - 私はあなたの立場に同意します。私が401について再度尋ねたとき、私は妥当性を求めているケースに関してのみ意味しました。私はこれがRESTのアプローチから「間違っている」ことを理解していますが、私はこの質問のために結論に達したいと思います。だから、私が間違ったことをして真理値を真偽値として返すのであれば、そのリクエスト/クエリに認証が実際には必要ないとすれば、401を返すのは不適切でしょうか? – Matt