【发布时间】:2014-03-28 21:16:56
【问题描述】:
我正在设计一个 REST API,该 API 的某些区域可供公众使用,而其他区域可供私人使用(主要是管理员)。
例如公共 API 将允许显示产品列表,而无需最终用户进行身份验证。因此,向 API 验证自身身份的是 Web 应用程序(或手机应用程序)。
而管理员应该能够登录,获取 OAuth 令牌,然后执行某些方法。
我使用 Web API2.0/C# 设计了 api,但是原理保持不变。我目前正在使用 ASP.NET Identity 并向经过身份验证的用户提供访问令牌和刷新令牌,以便他们可以执行此类非公共调用。如果他们没有令牌,他们就无法访问 API。
我将如何在公共 API 级别执行此操作?显然,我想验证的不是最终用户,而是实际的应用程序本身,即使调用是公开的,这样一些随机的 John Doe 不能只进行公开的 GET 调用。
我确实意识到我们有客户端 ID 和应用程序密钥。这就是人们通常对公共电话进行身份验证的方式吗?我担心在每次通话中一遍又一遍地传递客户 ID 和机密会破坏目的。
对此的任何指示将不胜感激。
【问题讨论】:
标签: rest asp.net-web-api asp.net-web-api2