【问题标题】:REST API Public/Secure ArchitectureREST API 公共/安全架构
【发布时间】: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


    【解决方案1】:

    请阅读这篇关于符合最佳实践的 RESTful web api 的文章:

    http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api#requirements

    希望对你有帮助

    但正如我从您的问题中了解到的那样,您应该在同一模型上将管理员操作和用户操作分开,并使管理员操作仅对他可用。 不要与用户和管理员分享重要操作。

    【讨论】:

    • 我最终使用 client_credentials 授权来允许 Web 客户端和电话客户端进行身份验证并获取令牌。谢谢!
    猜你喜欢
    • 2019-05-20
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 2019-06-20
    相关资源
    最近更新 更多