2

グーグルで見て、何も見つかりませんでした。

APIキーに大きく依存するRESTlessWebアプリのバックエンドの設計を開始するための優れたリソース。

私は落ち着きのないWebサービスなどを作成する方法を知っていますが、APIキーを使用したことはありません。一般的に、人々はユーザーなどのためにGUIDを生成するだけですか?

4

2 に答える 2

4

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;
}
于 2013-04-11T16:57:52.963 に答える
2

GUIDは通常、十分に「ランダム」ではなく、悪意のあるユーザーが簡単に推測できます。

ユーザーのパスワードハッシュや乱数などの「ランダム」データを取得し、sha1または同様のハッシュ関数を使用して結果を実行します。

アカウントごとに1つのAPIキーが必要な場合は、アカウントのメタデータテーブルに追加するだけです。それ以外の場合は、accountIdsにリンクされたテーブルを使用してAPIキーを保存します。

サーバー側は、アカウントのメタデータを一時的に保存するためのキーとしてapi-keyを使用するキャッシュを使用するため、セッションごとに1回だけデータベースにアクセスする必要があります。

そしてもちろん、APIキーが盗まれるのを防ぐために、すべてがhttpsを経由する必要があります。

これで、サービスが「セッション」指向の場合、一時的なセッションキーの使用を検討できるため、APIキーを公開する必要はありません。これをさらに調査するには、公開鍵暗号化を探してください。

于 2011-06-04T08:21:52.247 に答える