我正在开发一个 ASP.Net MVC 4 Web API 应用程序,该应用程序将成为不同移动/Web 客户端应用程序的源数据。我需要对用户进行身份验证,以便为用户返回正确的内容集。我正在考虑使用发送到我的 Web API 应用程序的每个请求的 API 密钥。API 密钥标识用户。我发现这篇文章概述了一个潜在的解决方案:From API Key to User with ASP.NET Web API
我需要支持表单身份验证以及 Facebook、Twitter 等的 oAuth 2.0。所有这些方法都会产生一个令牌,我可以使用它从不同的客户端来回发送到我的 Web API,这样我就可以识别用户。我了解 Facebook 访问令牌已过期。我对处理 Facebook 交互的最佳方式有点困惑。以下哪条路径是最好的方法:
依靠不同的客户端应用程序对 Facebook(和其他 oAuth 提供程序)进行身份验证以建立 Facebook 访问令牌,然后将其转发到我的 Web API 应用程序?这意味着所有客户端都有责任确保 Facebook 访问令牌未过期。Web API 应用假定访问令牌始终有效。这对我来说似乎很危险。不同的应用程序将对用户进行身份验证,然后将用户信息发送到 WebAPI 应用程序以注册用户,以便用户使用来自我的 Web API 应用程序的数据。这似乎有很多重复。
让我的 Web API 应用程序代表使用我的 Web API 的所有不同客户端应用程序单独负责与 Facebook(和其他 oAuth 提供者)交互。所以这种方法似乎表明我需要为我的 Web API 应用程序构建某种身份验证 UI。我知道 ASP.Net MVC Web API 可以有视图和前端的东西,但在我看来你总是把东西混在一起。似乎 Web API 应用程序应该特别专注于返回数据。来自所有不同客户端应用程序的用户将通过填写注册表或使用 Facebook、Twitter 等来注册我的 Web Api 应用程序。将 UI 视图与纯 REST Web API 应用程序混合是否可以?然后,您必须开始担心与不同设备上的 UI 相关的一切,等等。
还有另一种我看不到的方法吗?
我非常感谢您可能拥有的任何指导和示例链接。谢谢你的时间。