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

允许开发人员访问由Auth0保护的api的令牌,api,architecture,oauth-2.0,auth0,Api,Architecture,Oauth 2.0,Auth0,我已经成功地使用了Auth0一段时间,最近我遇到了一个新的挑战:允许外部开发人员使用我的web应用程序提供的凭据访问我的API 现行制度包括: 使用Auth0登录的Web应用程序(当前不是SPA) 具有Auth0 API身份验证的后端API 当前Auth0中只有一个客户端。用户登录该网站,当他们通过该网站调用API时,令牌将在标题中传递 我的问题是:允许开发者在我的网站上以自助方式请求直接访问api的最佳方式是什么 我看到了两条前进的道路,要么通过Auth0管理API(github风格)为每

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

现行制度包括:

  • 使用Auth0登录的Web应用程序(当前不是SPA)
  • 具有Auth0 API身份验证的后端API
当前Auth0中只有一个客户端。用户登录该网站,当他们通过该网站调用API时,令牌将在标题中传递

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


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

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

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

这样做的好处是,如果您想阻止现有开发人员使用您的API,只需删除关联的客户端应用程序,他们将不再被允许请求访问令牌,他们已经拥有的令牌将很短,很快就会过期。当使用长寿命令牌时,这一要求更难实现,因为它们需要被撤销/列入黑名单



最后,请注意,如果这些应用程序在调用API时不需要代表终端用户,并且您更愿意接受访问令牌而不是使用不同的方法,比如API密钥,那么您可以考虑注册用于使用.</P>的客户端应用程序,这很好,谢谢。您关于API提供最终用户拥有的功能和资源的假设是正确的。这就是我一直在寻找的建议。