My adventure in designing API keys
3 days ago
- #Performance Optimization
- #API Keys
- #Database Sharding
- API密钥是通过令牌验证和授权访问公共API,无需会话。
- 常见的API密钥格式包含前缀(例如gh、sk_live)、随机十六进制字符和校验和。
- 为安全起见,API密钥通常会被哈希处理后存储在数据库中,有时仅显示前几个字符。
- 一个需要分片的多租户系统要求使用API密钥将请求路由到正确的数据库分片。
- 考虑的将API密钥映射到账户的方法包括直接哈希到账户ID映射、唯一前缀映射和编码字符串方法。
- 基准测试显示,由于B树的高效性和JavaScript中BigInt操作的缓慢,完整的SHA-256哈希比Base-62或Base-70编码性能更好。
- 最终选择了SHAKE256和base64url编码以减少尺寸并获得良好性能,同时选用10字符编码以最小化碰撞风险。
- 关键收获包括对B树索引、哈希算法的深入了解,以及彻底测试和避免假设的重要性。