2

在谷歌上查找并找不到任何东西。

任何好的资源都可以帮助我开始为将严重依赖 API 密钥的 RESTless Web 应用程序设计我的后端。

我知道如何编写不安的网络服务等,只是从未使用过 API 密钥。通常人们只是为用户等生成指南吗?

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 或类似的哈希函数运行结果。

如果您希望每个账户有一个 API 密钥,只需将其添加到账户元数据表中即可。否则,使用链接到 accountIds 的表来存储 api 密钥。

服务器端使用缓存,使用 api-key 作为密钥来临时存储帐户元数据,因此每个会话只需访问 db 一次。

当然,一切都必须通过 https 来避免 API 密钥被盗。

现在,如果您的服务是面向“会话”的,您可以考虑使用临时会话密钥,这样您就不需要公开 API 密钥。寻找公钥加密来进一步调查。

于 2011-06-04T08:21:52.247 回答