グーグルで見て、何も見つかりませんでした。
APIキーに大きく依存するRESTlessWebアプリのバックエンドの設計を開始するための優れたリソース。
私は落ち着きのないWebサービスなどを作成する方法を知っていますが、APIキーを使用したことはありません。一般的に、人々はユーザーなどのためにGUIDを生成するだけですか?
WebサービスのAPIキーを作成する方法は次のとおりです。
string CreateApiKey(int length)
{
var bytes = new byte[length * 2];
using (var rng = new RNGCryptoServiceProvider())
rng.GetBytes(bytes);
var chars = Convert.ToBase64String(bytes)
.Where(char.IsLetterOrDigit)
.Take(length)
.ToArray();
var key = new String(chars);
return key;
}
GUIDは通常、十分に「ランダム」ではなく、悪意のあるユーザーが簡単に推測できます。
ユーザーのパスワードハッシュや乱数などの「ランダム」データを取得し、sha1または同様のハッシュ関数を使用して結果を実行します。
アカウントごとに1つのAPIキーが必要な場合は、アカウントのメタデータテーブルに追加するだけです。それ以外の場合は、accountIdsにリンクされたテーブルを使用してAPIキーを保存します。
サーバー側は、アカウントのメタデータを一時的に保存するためのキーとしてapi-keyを使用するキャッシュを使用するため、セッションごとに1回だけデータベースにアクセスする必要があります。
そしてもちろん、APIキーが盗まれるのを防ぐために、すべてがhttpsを経由する必要があります。
これで、サービスが「セッション」指向の場合、一時的なセッションキーの使用を検討できるため、APIキーを公開する必要はありません。これをさらに調査するには、公開鍵暗号化を探してください。