我希望使用 OAuth 来保护一些 Web 服务。OAuth 2 非常适合我的用例,在这些用例中,用户可能使用 API 访问他/她自己的数据或授予某人访问权限以代表他调用 API。
但是,最初的 API 用户集技术含量不高,他们不希望仅仅为了生成令牌而进行 API 调用。我正在考虑实施以下解决方案,但不确定这是否正确。
如果用户是开发者,那么
- 有一个屏幕,他/她可以在其中注册应用程序。这将生成一个 API 密钥/秘密对。
- 要访问他/她自己的数据(对于 2 腿身份验证),有一个 UI 屏幕,用户可以在其中为他注册的应用程序生成访问令牌。他可以在表格中指定范围和持续时间。
- 如果他是第 3 方开发人员,那么他需要将他的应用程序 API 密钥传递给他需要代表其访问 API 并获得访问令牌的人作为交换。
如果用户希望另一个应用程序/开发人员代表他访问 API,那么
- 有一个屏幕,他可以在其中输入第三方的 API 密钥、范围和授权期限。他可以将生成的访问令牌传递给将访问 API 的开发人员
我将使用相同的 OAuth 库来生成如果我走 Web 服务路线我会使用的令牌。此外,当当前情况无法扩展或需要时,我还可以开发服务并且现有令牌仍然有效。