使用事例:
API キーの最初の使用例は自動化です。あなたのapi key
(または一般的に呼ばれるtoken
)をサードパーティに提供すると、出来上がり、サードパーティにあなたのために何かをしてもらうことができます。サードパーティを信頼しなくなった場合は、サードパーティを取り消すapi key
か、再生成するだけです。API キーを使用すると、ユーザーは従来の認証 (例: username/password
) を介してトークンを要求することで一連のアクションを開始および認証でき、ユーザーはそれを関係者に渡します。最後の電話番号に関する私の小さな話を参照してください。
なぜパスワードを使用しないのですか?
他の Web サイトのユーザーを危険にさらしたり、API を使用するためにパスワードを入力させたりしたくないためです。サードパーティが侵害された場合、ユーザーの通信またはパスワードが侵害されます。
良いリソースは次のとおりです。
Tastypie の API キー
ここに良い出発点があります:
from django.contrib.auth.models import User
from django.db import models
from tastypie.models import create_api_key
models.signals.post_save.connect(create_api_key, sender=User)
post_save
これにより、シグナルのおかげで API キーが作成されます。2番目の部分は、ユースケースに合わせて認証用の複数のスキームを許可することですMultiAuthentication
。
from django.contrib.auth.models import User
from tastypie.authentication import BasicAuthentication, ApiKeyAuthentication, MultiAuthentication
from tastypie.authorization import DjangoAuthorization
from tastypie.resources import ModelResource
class UserResource(ModelResource):
class Meta:
queryset = User.objects.all()
resource_name = 'auth/user'
excludes = ['email', 'password', 'is_superuser']
authentication = MultiAuthentication(BasicAuthentication(), ApiKeyAuthentication())
authorization = DjangoAuthorization()
その他の考慮事項
これらは、ネットワーク上で機密データを漏らさないための良い習慣です。
ssl
またはなしでユーザー/パスワード認証を行わないでくださいtls
。
ssl
またはなしで http 基本認証を使用しないでtls
ください。
- を使用して、ユーザーがアクセスしてはならないリソースをロックダウンします
permissions
。
cache-control
応答のヘッダーが正しいことを確認してください
- ユーザーがトークン/APIキーをリセット/再生成/削除できるように常に許可します。
- ユーザーは API キーを 1 つだけ持つ必要はなく、複数持つことができます。サードパーティごとに 1 つ。
私は gmail を使用しているので、 https ://security.google.com/settings/security (レビュー権限)の例を次に示します。ここでは、Google の openid がどのように使用されているかを確認できます。
サードパーティごとに 1 つの API キーを使用する必要があるのはなぜですか? ユーザーが複数の api キーを持ち、特定の用途のためにそれらにラベルを付けることを許可する必要があるのはなぜですか? と同じです。.
答えは、api key
が と同じように共有するものである場合phone number
ですが、すべての友達に同じ電話番号を与える必要はないということです (Google 音声 FTW!)。
あなたの友人が行儀が悪く、たくさんの営業担当者にそれを渡した場合、あなたはかなりイライラするでしょう. あなたの電話が同じである場合、それを持っている人は誰でも、知らないうちに他の人と共有する可能性があります. 最終結果、すべての営業担当者はあなたの番号を知っています...あまり良くありません。でも、お母さんに電話してもらいたいですよね?したがって、実際に番号を変更することはできません。もっと危険な状況を想像してみてください。あなたは地元のピッツェリアにタブがあり、彼らは名前/電話番号であなたを知っています. 誰かがあなたの API キーを取得すると、あなたになりすましてピザを注文し、料金を請求する可能性があります (タブがあります!)。
100 の番号を 100 人の友人に与えると、彼らはあなたに連絡できるだけでなく、営業担当者が特定の番号であなたに電話をかけた場合、どの友人がその番号を譲渡したかを知ることができ、その 1 つの番号をカットすることができます。 . お母さんは、ブランチの行き先を教えてくれるので、今は幸せです。あなたの友人はピザを注文することにしました...あなたはそれをあなたの友人にたどることができます(またはあなたの友人の誰も知らないピザ屋に番号を提供する必要があります).