我已经成功使用了Auth0一段时间,我最近遇到了一个新的挑战:允许外部开发人员使用我的网络应用程序提供的凭据访问我的API。
现行制度包括:
目前Auth0中有一个客户端。用户登录网站,当他们通过网站调用API时,令牌将在标题中传递。
我的问题是:允许开发人员在我的网站上以自助服务方式请求直接访问api的最佳方法是什么?
我看到前进的两条路径,要么通过Auth0管理API(github样式)为每个开发人员应用程序创建一个客户端,要么代表开发人员请求一个令人生命很长的代码(如AppVeyor)。
答案 0 :(得分:2)
我假设您的API提供了与最终用户关联或拥有的功能和/或资源,并且您希望允许其他应用程序代表每个最终用户访问此数据。 如果情况并非如此,并且您的API是通用的,并且不需要最终用户身份的概念,那么其他方法(如API密钥)也可以满足您的要求。
考虑到最终用户委派方案,我建议的方法是在Auth0中创建单独的客户端应用程序。就像你说的那样,你可以通过Management API自动化这个过程,这样就可以以自助服务的方式处理这个过程。尽管是自助服务,但启用注册的应用程序仍然可以应用约束,以确保只有符合条件的开发人员才能获取必要的信息,然后获取访问权限以访问API。
这样做的好处是,如果您想阻止现有开发人员使用您的API,您只需删除关联的客户端应用程序,就不会再允许他们请求访问令牌,而他们已经拥有的将会是短暂的,很快就会到期。使用长期令牌时,此要求实施起来比较复杂,因为它们需要被撤销/列入黑名单。
最后一点,如果这些应用程序在调用您的API时不需要代表最终用户执行操作,并且您更愿意仍然接受访问令牌而不是使用其他方法(如API密钥),那么您可以考虑注册要使用client credentials grant的客户端应用程序。