我希望为基于RESTful超媒体的API构建一个客户端,在审查了许多选项之后,我正在学习如何将oAuth*变成授权访问API的实际方法。
我想我已经理解了整个oauth的概念,即根据客户端(是否受信任),规范提供了几个流,以便从授予客户端访问权限的资源所有者(用户)的角度“信任”客户端(应用程序)。
由于我正在构建的应用程序直接是服务生态系统的一部分,它将属于可信客户端部分,因此我决定实施资源所有者密码凭据授予,但这是我的知识被术语和oAuth要提供的确切角色弄糊涂的地方,我的大脑关闭了:)
我认为这就是流程(还有一些更技术性的想法):
-
通过登录表单,资源所有者提供他们的凭据
-
将详细信息提交给服务器(在本例中为express.js应用程序)
-
该应用程序通过一些本地机制根据商店验证用户凭据
-
如果用户不存在或验证失败,则返回登录
-
如果用户确实存在并且通过了验证,则会启动将其凭据交换为令牌的机制(联系oAuth服务器并交换详细信息),该机制将加密/哈希信息存储在某处(可能是redis?)
-
一旦返回令牌,它就被存储在一个会话中,以便持久化到客户端(我认为trello.com会做一些类似的事情,因为他们有一个令牌cookie,但我可能错了)
这是一个可以接受的流程吗?我似乎找不到任何可用的例子,作为目前唯一的开发人员,最好能得到一些反馈。