【发布时间】:2015-12-22 14:10:17
【问题描述】:
Asp.NET Web API 会在注册全新客户端时生成 Secret Key(使用 32 个字符长的对称算法)存储在数据库列中(对其具有唯一约束)。在整个 API 使用过程中,客户端必须在 Authorization 标头中提供 Secret Key 才能访问其自己的资源(多租户 SaaS 环境)。目前不需要访问令牌。需要 Client Secret Key 的主要原因是为了从数据库中过滤和传递适当的数据!
我认为使用 WHERE 子句中的 ClientSecretKey 从 SQL 表中获取客户端数据不会对性能友好,例如:
SELECT Multiple_Columns from ClientTable WHERE ClientSecretKey='X3i1aBer'
理想情况下,我更愿意使用 ClientId 获取客户记录,ClientId 定义为表中的 IDENTITY 列。
问题:
- 在对数据库执行查询以获取特定客户端记录时,如何最好地设计一个绝对性能友好的唯一客户端密钥?
- 我的想法或设计有什么缺陷吗?
任何想法都将不胜感激。
谢谢!
【问题讨论】:
标签: c# sql-server api rest asp.net-web-api