88

会社のデータに対してパブリックAPIを設計しています。アプリケーション開発者がAPIキーにサインアップして、使用と過剰使用を監視できるようにする必要があります。

APIはRESTであるため、私の最初の考えは、このキーをカスタムヘッダーに配置することです。これは私がグーグル、アマゾン、そしてヤフーがそれをするのを見た方法です。一方、私の上司は、キーがURLの一部にすぎない場合など、APIの方が使いやすいと考えています。「http://api.domain.tld/longapikey1234/resource」。そのために言うべきことがあると思いますが、それはあなたが望むものの単純なアドレスとしてのURLの原則に違反しており、あなたがそれを望む方法や理由ではありません。

URLにキーを入れるのは論理的だと思いますか?または、単純なjavascriptフロントエンドを一部のデータに書き込む場合は、HTTPヘッダーを手動で設定する必要はありませんか?

4

5 に答える 5

85

HTTP認証ヘッダーに配置する必要があります。仕様はこちらhttps://www.rfc-editor.org/rfc/rfc7235

于 2011-04-01T19:44:06.523 に答える
72

上司にアピールする可能性のある議論が必要な場合:URLとは何かを考えてください。URLは公開されています。人々はそれらをコピーして貼り付けます。彼らはそれらを共有し、広告に載せます。誰かが(知っているかどうかにかかわらず)他の人が使用できるようにそのURLをメールで送信することを妨げるものは何もありません。APIキーがそのURLにある場合、誰もがそれを持っています。

于 2011-04-02T17:56:03.120 に答える
17

URLではなくヘッダーでAPIキーを使用することをお勧めします。

ブラウザから試行した場合、URLはブラウザの履歴に保存されます。非常にまれなシナリオです。ただし、バックエンドサーバーがすべてのURLをログに記録すると問題が発生します。APIキーが公開される可能性があります。

2つの方法で、ヘッダーでAPIキーを使用できます

基本認証:

ストライプの例:

curl https://api.stripe.com/v1/charges -u sk_test_BQokikJOvBiI2HlWgH4olfQ2:

curlは-uフラグを使用して基本認証クレデンシャルを渡します(APIキーの後にコロンを追加すると、パスワードの入力を求められなくなります)。

カスタムヘッダー

curl -H "X-API-KEY: 6fa741de1bdd1d91830ba" https://api.mydomain.com/v1/users
于 2015-02-24T07:01:45.470 に答える
2

キーはRESTであるこの緩い「標準」に違反するため、URLには入れません。ただし、そうする場合は、URLの「user」部分に配置します。

例:http://me@example.com/myresource/myid

このようにして、basic-authを使用してヘッダーとして渡すこともできます。

于 2011-04-01T18:28:15.880 に答える
1

パラメータでAPIキーを渡すと、クライアントがAPIキーを秘密に保つことが難しくなり、定期的にキーをリークする傾向があります。より良いアプローチは、リクエストurlのヘッダーでそれを渡すことです。コードでユーザーキーヘッダーを設定できます。リクエストURLをテストするには、user-keyヘッダーをapi-keyに設定することで、GoogleChromeでPostmanアプリを使用できます。

于 2017-07-15T11:37:20.623 に答える