我正在设计一个REST API,其中某些区域可供公众使用,而其他区域则可供私人使用(主要是管理员)。
例如Public API允许显示产品列表,而无需最终用户进行身份验证。因此,Web应用程序(或电话应用程序)会对API进行身份验证。
管理员应该能够登录,获取OAuth令牌,然后执行某些方法。
我使用Web API2.0 / C#设计了api,但原则保持不变。我目前正在使用ASP.NET身份,并为经过身份验证的用户提供访问令牌和刷新令牌,以便他们可以执行此类非公开调用。如果他们没有令牌,他们就无法访问API。
我如何在公共API级别执行此操作?显然,我想要验证的不是最终用户,而是实际的应用程序本身,即使这些调用是公开的,因此一些随机的John Doe不能只是进行公共GET调用。
我确实知道我们有Client Id和App Secret。这是人们通常如何验证公共电话?我担心在每次通话中反复传递客户端ID和密码都会失败。
对此的任何指示都将受到高度赞赏。
答案 0 :(得分:4)
请阅读本文关于符合最佳实践的RESTful web api:
http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api#requirements
希望有所帮助
但正如我从您的问题中意识到的那样,您应该在同一模型上分离管理操作和用户操作,并使管理员操作仅对他可用。 不要与用户和管理员分享重要的行动。