Hasty Briefsbeta

双语

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树索引、哈希算法的深入了解,以及彻底测试和避免假设的重要性。