web-dev-qa-db-ja.com

APIキーとは何ですか?

最近、ほぼすべてのクロスサービスアプリケーションにこのWordが表示されています。

APIキーとは正確にどのようなものですか?

また、パブリックAPIキーとプライベートAPIキーの違いは何ですか。

101
OrangeRind

APIキーが「正確に」使用されるかどうかは、誰がキーを発行するか、どのキーに使用されているかに大きく依存します。ただし、概して、APIキーは、リクエストの発信元を識別するためにWebサービス(または同様の)リクエストとともに送信される何らかの形式のシークレットトークンに与えられる名前です。発信元をさらに検証し、値の改ざんを防ぐために、要求コンテンツのダイジェストにキーを含めることができます。

通常、リクエストの送信元を明確に識別できる場合、それは認証の一形態として機能し、アクセス制御につながる可能性があります。たとえば、リクエストの実行者に基づいて特定のAPIアクションへのアクセスを制限できます。このようなサービスを販売して収益を上げる企業にとっては、請求目的で誰がモノを使用しているかを追跡する方法でもあります。さらに、キーをブロックすることにより、リクエスト量が多すぎる場合の不正使用を部分的に防ぐことができます。

一般に、公開APIキーと秘密APIキーの両方がある場合、キー自体は 非対称暗号化 または関連するデジタル署名の何らかの形式で使用される従来の公開/秘密キーペアであることを示唆します。これらは、リクエストのソースを確実に識別するためのより安全な技術であり、さらに、リクエストのコンテンツを(改ざんに加えて)スヌーピングから保護するためのものです。

104
Rob

非常に一般的に言えば:

APIキーは単にあなたを識別するだけです。

パブリック/プライベートの区別がある場合、パブリックキーは他のユーザーに配布できるものであり、APIからユーザーに関する情報のサブセットを取得できます。秘密鍵はユーザー専用であり、すべてのデータへのアクセスを提供します。

22
timdev

多くの人がセキュリティキーとしてAPIキーを使用しているようです。一番下の行は:APIキーをsecretとして扱わないでください。 httpsであるかどうかにかかわらず、リクエストを読み取ることができる人は誰でもAPIキーを見ることができ、必要な呼び出しを行うことができます。 APIキーは、SSLで使用する場合でも完全なセキュリティソリューションではないため、「ユーザー」識別子と同じにする必要があります。

より良い説明は、Eugene Osovetskyのリンクにあります: ほとんどのAPIを使用する場合、2つのタイプの認証、つまりキーとシークレットが必要なのはなぜですか? またはチェック http://nordicapis.com/why-api-keys-are-not-enough/

13
timandtheocean

APIキーは、サービスのユーザーとして受け入れられたときにこのサービスのユーザーに割り当てられる一意の値です。

サービスは発行されたすべてのキーを保持し、リクエストごとにチェックします。

リクエストで提供されたキーを見ると、サービスはそれが有効なキーであるかどうかをチェックして、ユーザーにアクセスを許可するかどうかを決定します。

9
user151323

APIキーは、Webサービスのユーザーを認証する1つの方法にすぎません。

2
GG.

このように考えると、「公開APIキー」は、データベースが検証サーバーへのログインとして使用しているユーザー名に似ています。その場合、「プライベートAPIキー」はパスワードに類似しています。この方法を使用するサイト/データベースでは、サイト/データベースの投稿または編集の認証リクエストのために、サードパーティ/検証サーバーでセキュリティが維持されます。

API文字列は、サイト/データベースが検証サーバーに接続するためのログインのURLです。