请考虑以下(常见)方案。我将首先尝试使用OAuth指定我理解(好)Web API的样子。如果我有任何错误的流量,请纠正我。Web API认证和授权(OAuth)
我的API:关注的中心,所有的客户都使用它。
我的Web应用程序:使用API就像任何其他客户端会。
我的移动应用程序:也使用API,与web应用程序的方式完全相同。用户应该能够在不打开浏览器的情况下进行身份验证。
第三方Web应用程序:也使用API - 但是,用户/资源所有者必须授予应用程序执行某些操作的权限。他们通过重定向到我的网站(或打开弹出窗口),在必要时记录用户并提示用户访问。
第三方移动应用程序:与第三方网络应用程序的要求相同。
的问题(一个或多个)
- 如若API处理身份验证和授权?
- API如何知道谁(使用客户端应用程序的资源所有者)正在使用API?
- 当用户使用我的官方客户时,他们显然不需要授予任何权限 - 我的客户应该拥有所有权限。在调用API时,我如何区分我的官方客户端和第三方客户端?
以下是我的理解,并会做到目前为止。这是我真正需要帮助的地方 - 正确地完成这项工作。
官方的Web应用程序
- Client attempts to `GET /api/tasks/".
- API says "who are you? (HTTP 401)
- Official web app redirects to login form.
> Bob enters his credentials.
- .. now what? Get an authentication token? Cookie?
- 由于web应用程序只是我的API的消费者,如何将我管理的登录状态?网络应用程序应该这样做吗?
- Web应用程序是否应该直接访问用户数据库,而不是根据API验证凭据?
我主要使用.NET(C#),但我喜欢一种适用于基于Node JS的API的方法。
你会怎么做呢?特别是客户流量对我来说是一个问题。我问的原因是,我已经读过,除非有绝对必要,否则你不应该推出自己的安全解决方案,所以如果有任何标准指导方针,请告诉我。 :)
您是否找到解决您的问题的方法,因为我目前正在寻找一个最好的和最低的寻找解决方案。 – idipous
不,可悲的是.. – Jeff
oauthbible.com可能有帮助吗? –