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