ASP.NET Web API客户端HMAC身份验证加密

ASP.NET Web API客户端HMAC身份验证加密,asp.net,encryption,hmac,Asp.net,Encryption,Hmac,我正在创建一个asp.net API,并打算使用HMAC身份验证来验证传入的请求 每个用户都将拥有公钥和密钥。密钥用于在名为signature的查询字符串中添加公钥的加密值,并在查询字符串中添加公钥 当用户发出请求时,我将使用从服务器端数据库获得的密钥对查询字符串中提供的公钥进行加密 如果查询字符串中提供的签名与我的加密字符串匹配,则我允许用户访问API,否则我将发送未经授权的请求错误 然而,我的问题是,当使用jQuery调用WebAPI方法时,密钥在客户端是可见的,因为我使用CryptoJS加

我正在创建一个asp.net API,并打算使用HMAC身份验证来验证传入的请求

每个用户都将拥有公钥和密钥。密钥用于在名为signature的查询字符串中添加公钥的加密值,并在查询字符串中添加公钥

当用户发出请求时,我将使用从服务器端数据库获得的密钥对查询字符串中提供的公钥进行加密

如果查询字符串中提供的签名与我的加密字符串匹配,则我允许用户访问API,否则我将发送未经授权的请求错误

然而,我的问题是,当使用jQuery调用WebAPI方法时,密钥在客户端是可见的,因为我使用CryptoJS加密公钥


所以我必须将加密逻辑移到服务器端。避免在客户端JavaScript上使用密钥的最佳方法?

尽管HMAC可用于身份验证,但在大多数情况下它用于完整性。此外,在客户端保存密钥会使它们“公开”,因为每个人都可以访问您的客户端代码。如果您的API使用加密,您可能需要请求用户身份验证,因此基于令牌的交换可能会有所帮助。例如,检查facebook oauth的工作原理。@bitoiu感谢您的建议。我有一个web表单应用程序,我正在为web api创建单独的项目,以便仅向注册用户公开该web应用程序的某些功能。我不想在WebAPI项目中实现另一个基于表单的身份验证。那么,有什么方法可以从我的web应用程序中验证用户身份呢。oauth在我的场景中有效吗?