2016-11-23 5 views
1

私は基本的にユーザーにフォームの証明書を要求します(ランダムなサードパーティサービスの場合、重要ではないことを知っています)。 ユーザーがサードパーティのサービスアプリケーショントークンでフォームに入力すると、トークンの要求がアプリケーションバックエンドに送信され、バックエンドはトークンを取得し、トークンが有効かどうかを確認するためにサードパーティのサービスに要求を送信します。 この時点で、サードパーティサービスは、200 - {randomObject: object}または401 - Unauthorizedのいずれかを使用してバックエンドへの応答を返します。サードパーティアプリケーションでエラーが発生した場合の応答コードは何ですか?

サードパーティのサービスが401を返した場合、バックエンドは200 - falseまたは401 - Unauthorizedを返しますか?

私と私の同僚は、これについて論争してきました。 私のポイントは、アプリケーションのバックエンドへのアクセスが許可されており、パラメータが正しいことです(要求にトークンが存在するため)。応答は200にする必要がありますが、トークンが有効であるかどうかを応答の内容で示す必要があります。 トークンが有効でないため(サードパーティのサービスがバックエンドに伝えるように)、バックエンドは401 - Unauthorizedを返す必要があります。

私たちは明らかですが、その結果はどちらも同じです。実際にはこの機能は既に機能しています。この特定の問題に関して何らかの規則があることを知りたいだけです。

はあなたにこのオン

答えて

3

私はあなたのAPIへのアクセスが不正ではなかったので、400または401

401は誤解を招くかもしれないいずれかのために行くだろう。400は最高かもしれない一方、

(特にあなたのAPIは、認証を必要とする場合):

400(不正な要求)ステータスコードは、サーバーが起因して、要求を処理しませんではないか ことを示し

私はトレンドを少し降圧し、あなたが200

返すべきであると言うでしょう クライアントエラー

+0

誤って入力された第三者トークンがクライアントエラーであると言うと、あなたの答えに感謝します! – bastienbot

0

ありがとう:

私のポイントは、アプリケーションのバックエンドへのアクセスは(トークンがリクエストに存在する) を許可し、パラメータが正しいされていることであるので、 応答は200である必要があります

トークンの存在は、要求が有効であることを意味しません。無効な資格情報が提供されたため、401 Unauthorizedを使用してください。 httpstatuses.comから:それはターゲット・リソースの有効な認証 資格情報がないため

要求が適用されていません。

あなたは資格があなたのサービスのためではなく、サードパーティのサービスのためので、あなたのサービスへの認証を主張することができることを、失敗するが、その場合にはされていないので、それが200する必要があります考えていた場合200を返すことは望ましくありませんが、400 Bad Requestの代わりに、API操作を正常に完了するためのパラメータが無効であるためです。

1

私はそれがまだ401であるべきだと言います。バックエンドの動作は、その内部動作がエンドユーザにとって重要ではないという意味で、アプリケーションに影響を及ぼさないはずです。あなたの認証サービスがあなたにそれが有効でないことを伝えているという事実は、あなたがこのエラーをスローするのに十分であるはずです。

0

ように知覚される何かステータスコード401はHTTP認証に関連しています。 W3Cは、ステータスコードについて次のように述べています。

この要求には、ユーザー認証が必要です。 応答は、要求されたリソースに適用可能なチャレンジ を含むWWW-Authenticateヘッダフィールド(セクション14.47)を含まなければならない(MUST)。クライアントは、 要求を適切なAuthorizationヘッダーフィールド(14.8節)で繰り返すことができる(MAY)。 要求にすでに承認資格情報が含まれている場合、401 応答は、それらの資格情報の承認が拒否されたことを示します。 401レスポンスが 以前のレスポンスと同じチャレンジを含み、ユーザエージェントが少なくとも 認証を少なくとも1回試行した場合、そのエンティティには が含まれている可能性があるので、レスポンスで与えられた エンティティを提示すべきである(SHOULD)診断情報。

source

サーバーはおそらくHTTP認証自体を使用していないので、あなたは正しくこのスペックを以下れることはありませんため、課題にWWW-Authenticateヘッダを返すことはありません。あなたが呼び出しているサードパーティのAPIがこれを正しく行うかもしれませんが、これはbyによって行われます。あなたのユーザーはサードパーティのAPIではなく、あなたからのページをリクエストしており、です。あなたのサーバーはではありません。は有効な応答に値しないと判断しました。誰かのサーバーがトークンが有効ではないとあなたに伝えました。

この場合、私は200を返します。の要求にはが成功しました。サーバーは、サードパーティAPI呼び出しが失敗したことを示す情報を返すことができます。

+0

あなたが説明したことはまさに私の要点ですが、人々がこの問題について異なる意見を持っているのを見ることができます。あなたの答えをありがとう! – bastienbot

関連する問題