在谷歌上查找并找不到任何东西。
任何好的资源都可以帮助我开始为将严重依赖 API 密钥的 RESTless Web 应用程序设计我的后端。
我知道如何编写不安的网络服务等,只是从未使用过 API 密钥。通常人们只是为用户等生成指南吗?
以下是我为 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 或类似的哈希函数运行结果。
如果您希望每个账户有一个 API 密钥,只需将其添加到账户元数据表中即可。否则,使用链接到 accountIds 的表来存储 api 密钥。
服务器端使用缓存,使用 api-key 作为密钥来临时存储帐户元数据,因此每个会话只需访问 db 一次。
当然,一切都必须通过 https 来避免 API 密钥被盗。
现在,如果您的服务是面向“会话”的,您可以考虑使用临时会话密钥,这样您就不需要公开 API 密钥。寻找公钥加密来进一步调查。