我已经成功使用 Auth0 一段时间了,最近我遇到了一个新的挑战:允许外部开发人员使用我的网络应用程序提供的凭据访问我的 API。
当前系统包括:
- 使用 Auth0 登录的 Web 应用程序(当前不是 SPA)
- 具有 Auth0 API 身份验证的后端 API
当前 Auth0 中只有一个客户端。用户登录网站,当他们通过网站调用 API 时, token 会在 header 中传递。
我的问题是:允许开发人员在我的网站上以自助服务方式请求直接访问 API 的最佳方式是什么?
我看到了两条前进的道路,要么通过 Auth0 管理 API(github 风格)为每个开发人员应用程序创建一个客户端,要么代表开发人员请求具有非常长生命周期的 token (如 AppVeyor)。
最佳答案
我假设您的 API 提供与最终用户关联或拥有的功能和/或资源,并且您希望允许其他应用程序也代表每个最终用户访问此数据。 如果情况并非如此,并且您的 API 是通用的,不需要最终用户身份的概念,那么 API key 等其他方法也可以满足您的要求。
考虑到最终用户委托(delegate)场景,我建议的方法是在 Auth0 中创建单独的客户端应用程序。正如您所说,您可以通过管理 API 自动化此过程,以便可以以自助服务的方式处理此过程。尽管是自助服务,启用注册的应用程序仍然可以应用限制,以确保只有符合条件的开发人员才能获取必要的信息,然后获取访问 token 来访问 API。
这样做的好处是,如果您想阻止现有开发人员使用您的 API,您只需删除关联的客户端应用程序,他们将不再被允许请求访问 token ,并且他们已经拥有的访问 token 将是短暂的并很快到期。使用长期 token 时,此要求的实现更加复杂,因为它们需要被撤销/列入黑名单。
<小时/>最后一点,如果这些应用程序在调用您的 API 时不需要代表最终用户操作,并且您希望仍然接受访问 token 而不是使用 API key 等不同方法,那么您可以考虑注册客户端应用程序旨在使用 client credentials grant .
关于api - 允许开发人员访问使用 Auth0 保护的 api 的 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41303799/