API认证&;授权OAuth三步走的方法:我做得对吗


API Authentication & Authorisation OAuth 3-legged approach: Am I doing it right?

我正在开发API,并考虑使用OAuth(三级方法)进行身份验证和授权。

这是的基本思想

  • 为了让客户端(移动应用程序或网络应用程序)使用此RESTful API,用户必须使用身份提供商/服务器登录,如Google、Facebook e.t.c

基本上有三方将在这里互动:

  • 移动/网络应用程序:试图访问我的API的应用程序
  • API:包含应用程序运行数据的网站
  • 身份服务器:允许用户登录以访问API的网站

现在,我理解这个过程的方式(假设我理解)。这将是流程(总结):

  • 用户将尝试从API(消费者)访问数据
  • 消费者发现用户未登录
  • 用户获得一个页面(带有服务提供商按钮,如使用谷歌登录)
  • 用户点击按钮,服务提供商返回登录表单
  • 用户登录
  • 服务提供商返回一个请求特定权限的页面
  • 用户授予权限
  • 服务提供商向用户返回访问令牌
  • 用户使用访问令牌再次尝试向消费者请求(API)
  • 消费者获取令牌,并根据服务提供商对其进行验证
  • 使用者授予用户访问权限

第一个

这个过程是正确的(在更高的层面上),还是我完全误解了整件事。如果不正确:你能提供一些调整吗?

第二次

经过这整个过程。消费者如何与用户沟通?我是否必须在每次请求时传递一个令牌(在移动应用程序和API之间)?或者我可以只使用服务提供商的用户详细信息来识别用户吗?

第三次

消费者(API)如何针对服务器验证用户提供的令牌?这已经在OAuth中实现了吗?还是我必须自己实现?

第四个和最后一个

在实现方面,客户端(移动应用程序/网络应用程序)和消费者(API)之间有什么区别?

我是这方面的新手,我正在尝试用PHP(API)实现它。如果您对PHP代码(示例实现)或外部资源有任何参考,我将非常感谢:-)

我也是oauth的新手,但我会尽力提供帮助。首先,您可以在这里查找可以提供帮助的适当库。

就我而言,你的胡言乱语是正确的。你也可以在这里找到很好的解释。请记住,授权服务器应该返回用于获取访问令牌的授权代码。

所以你的问题:

1) 按照第二个链接-"授权代码"。

2) 对于每一个给你的请求API,你应该发送你的访问令牌。类似的东西

http://<your api>?access_token=7f813af1-381d-4dd7-b70b-b6a8399b2c00

3) 只需使用第一个链接中的库。我希望他们已经实施了这一点

4) 不能完全理解你的意思。您的客户端必须能够获取访问令牌,存储它并随请求一起发送。API服务器必须能够从客户端接收访问令牌,并在访问令牌正确的情况下授予对API的访问权限。