api - 允许开发人员访问使用 Auth0 保护的 api 的 token

标签 api architecture oauth-2.0 auth0

我已经成功使用 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/

相关文章:

字节数与字符数

api - 如何在 SoundCloud 轨道 API 中区分音乐和非音乐?

java - 授权逻辑应该集中还是去中心化?

spring-boot - spring boot 2 中 jwt.key-uri 的替代品是什么

Android:Jelly Bean 或更高版本中的 setIndicatorBounds

javascript - API 速率限制是否将 javascript 请求视为来自域的 IP 或用户的 IP?

rest - 使用不透明访问 token 是否会使我的服务器有状态?

php - Google 的 oauth2-client 在 Codeigniter 中工作

java - 开箱即用 - Web 服务 - 数据库 - 网页/移动访问

c# - WPF MVVM 为什么使用 ContentControl + DataTemplate View 而不是直接的 XAML 窗口 View ?