我正在为学习管理系统创建一个REST启发式API。它将公开用户,类,成绩,课程等数据。我已经定义了我想要公开的所有资源,给每个资源一个端点URL,并定义了返回的JSON资源结构。
我现在想了解如何使用Oauth2保护API(我不想使用Oauth1)。假设我的API将同时发挥授权服务器和协议的作用,我是否正确?资源服务器?另外,我应该研究哪种授权类型/流程?
很多教程似乎都专注于使用Oauth2来使用facebook凭据等登录 - 但我只是想用它来保护我的API并允许我的用户访问我的API(通过客户端或直接访问)。 API的访问权限应遵循已在我们的系统中处理的各个用户访问权限。
对于分散枪的问题感到抱歉 - 我只是不明白oauth2知道在哪里指导我的研究。任何帮助都将非常感激,任何指向正确用例的简单教程的指针都会很棒。
仅供参考 - 系统使用Drupal 6构建在LAMP堆栈上(旧的,我知道)。
答案 0 :(得分:3)
您的假设是正确的,授权服务器和资源服务器可以位于同一服务器上,也可以位于同一API中。
那么OAuth2基本上如何工作你有某种客户端(服务器,浏览器)授权API将使用访问令牌授权使用您的资源API,然后在每个资源请求的Authorization HTTP标头中发送。
所以我的成功是,当用户登录时,您识别用户并立即生成访问令牌给客户端。现在你可以在访问令牌中放入一些数据,例如userId,权限等。现在,当访问令牌命中您的资源端点时,您可以识别用户并检查权限。此外,您可以使访问令牌变得愚蠢,以便它不包含任何数据,然后当您从授权API验证它时(在创建访问令牌时您必须将有关用户的信息存储到授权数据库),您可以获取信息你需要回应,例如userId,权限等。
要使用哪种授权类型流,这基本上取决于哪种类型的客户端正在使用您的授权API以及您希望授权的安全性。例如。隐式授权适用于可以处理重定向的基于浏览器的客户端。客户端凭据授权用于(服务器到服务器)通信。
参考here
答案 1 :(得分:0)
首先,您可以使用现有的提供程序(如WSO2 API Manager)来支持您的系统。它有详细记录,并为此提供了许多REST API。