APIキーを介した承認/認証を使用してREST APIを設計しています。
最適な場所を見つけようとしましたが、次のようなカスタムHTTPヘッダーの使用を多くの人が提案していることがわかりましたProjectName-Api-Key
。
ProjectName-Api-Key: abcde
ただしAuthorization
、カスタムスキームでヘッダーを使用することも可能です。
Authorization: ApiKey abcde
一方、カスタム認証スキームは、一部のクライアントでは予期せずサポートされず、カスタムコードにつながる可能性があるという考慮事項を見つけました。したがって、クライアントには期待がないため、カスタムヘッダーを使用する方がよいでしょう。
どの方法でAPIキーを送信しますか?
Bearer
スキームはoAuth2でのみ使用されます。oAuthとは別に適用すると、誤用されているように聞こえます。oAuthがない場合にこのスキームを使用するのが正しいのはなぜですか?ところで、APIの承認の種類を選択するのに苦労しました。APIは1つの信頼できるサービスでのみ使用できるため、oAuth2のクライアント資格情報フローを調査しましたが、私の場合はApiKeyと比較して利点が見つかりませんでした。
ApiKey
が変更されAccess Token
、有効期限なしでクライアントに付与されたものとして解釈された場合、ApiKey承認は有効なoAuth実装と見なすことができることを理解しました。それは一種の哲学的側面であり、私の場合を簡単な言葉で説明できるなら複雑な定義を持ち込まないことにし、単に「ApiKey」と呼ぶことにしました。プロトコルがoAuth標準を実装している場合、の使用に同意できますBearer
が、そうではありません。このスキームは適用できないと思います。
Authorization: Bearer <token>
ヘッダーを使用しており、それに関する問題は一度もありませんでした。トークンはJWTです。