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