【问题标题】:Allowing Developer Access tokens for an api secured with Auth0允许使用 Auth0 保护的 API 的开发人员访问令牌
【发布时间】:2017-05-09 07:09:43
【问题描述】:

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

当前系统包括:

  • 使用 Auth0 登录的 Web 应用(目前不是 SPA)
  • 带有 Auth0 api 身份验证的后端 API

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

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

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

【问题讨论】:

    标签: api architecture oauth-2.0 auth0


    【解决方案1】:

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

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

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


    最后一点,如果这些应用程序在调用您的 API 时不需要代表最终用户执行操作,并且您仍希望接受访问令牌而不是使用 API 密钥等其他方法,那么您可以考虑注册旨在使用client credentials grant 的客户端应用程序。

    【讨论】:

    • 太好了,谢谢,您对 API 提供最终用户拥有的功能和资源的假设是正确的。这是我一直在寻找的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 2019-09-20
    • 2015-10-15
    • 2020-04-13
    相关资源
    最近更新 更多