允许使用 Auth0 保护的 api 的开发人员访问令牌

Allowing Developer Access tokens for an api secured with Auth0

我已经成功使用 Auth0 一段时间了,我最近遇到了一个新挑战:允许外部开发人员使用我的网络应用程序提供的凭据访问我的 API。

当前系统包括:

当前 Auth0 中只有一个客户端。用户登录网站,当他们通过网站调用 API 时,令牌会在 headers 中传递。

我的问题是:允许开发人员在我的网站上以自助服务方式请求直接访问 api 的最佳方式是什么?

我看到两条前进的道路,要么通过 Auth0 管理 API(github 样式)为每个开发人员应用程序创建一个客户端,要么代表开发人员请求一个非常长的令牌生命周期(如 AppVeyor)。

我假设您的 API 提供与最终用户关联或拥有的功能 and/or 资源,并且您希望允许其他应用程序也代表每个最终用户。 如果不是这种情况,并且您 API 是通用的并且不需要最终用户身份的概念,那么 API 密钥等其他方法也可以满足您的要求要求.

考虑到最终用户授权场景,我推荐的方法是在 Auth0 中创建单独的客户端应用程序。正如您所说,您可以通过管理 API 自动执行此流程,以便以自助服务方式处理此流程。尽管是自助服务,启用注册的应用程序仍然可以应用约束,以确保只有符合条件的开发人员才能获得必要的信息,然后获得访问令牌以访问 API.

这样做的好处是,如果您想阻止现有开发人员使用您的 API,您只需删除关联的客户端应用程序,他们将不再被允许请求访问令牌以及他们所请求的访问令牌已经拥有的将是短暂的,很快就会过期。使用长期令牌时,此要求实施起来更复杂,因为它们需要 revoked/blacklisted.


最后一点,如果这些应用程序在调用您的 API 时不需要代表最终用户行事,并且您更愿意仍然接受访问令牌而不是使用其他方法,例如 API 键,那么你可以考虑注册客户端应用程序来使用 client credentials grant.