我正在编写一个 REST API(使用 ASP.NET WebApi),它将由我的单页 Web 应用程序通过客户端 JavaScript 调用任何人都可以安装的移动应用程序使用,最终我希望它被口渴方开发人员使用编写自己的应用程序。
我已经研究了 HMAC 以保护 API,但不确定如何将私钥安全地传递给客户端(即浏览器客户端,在移动应用程序上?
我试图让它只有我的应用程序、第 3 方开发应用程序和我的客户端 JavaScript 可以访问 api。
我正在编写一个 REST API(使用 ASP.NET WebApi),它将由我的单页 Web 应用程序通过客户端 JavaScript 调用任何人都可以安装的移动应用程序使用,最终我希望它被口渴方开发人员使用编写自己的应用程序。
我已经研究了 HMAC 以保护 API,但不确定如何将私钥安全地传递给客户端(即浏览器客户端,在移动应用程序上?
我试图让它只有我的应用程序、第 3 方开发应用程序和我的客户端 JavaScript 可以访问 api。
在您的用例中,我将使用两种不同的身份验证机制。对于在浏览器中运行的 SPA,我将使用表单身份验证对用户进行身份验证,并且当浏览器使用 AJAX 调用 Web API 时,我将依靠 ASP.NET 来验证存储在 cookie 中的凭据。对于第三方或移动应用程序,我会使用 HMAC 身份验证。您可以像 Windows Azure 或 AWS 等许多云提供商那样在带外交换该密钥。我为您可以使用的 Web API 创建了 HMAC 的实现。它在这里可用, https://github.com/pcibraro/hawknet
当用户使用用户名和密码进行身份验证时,您还可以在第一次调用时使用 SSL 交换密钥,但这取决于您。
问候巴勃罗