Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Api 理解Oauth2_Api_Oauth 2.0 - Fatal编程技术网

Api 理解Oauth2

Api 理解Oauth2,api,oauth-2.0,Api,Oauth 2.0,我正在为学习管理系统创建一个受REST启发的API。它将公开诸如用户、班级、成绩、课程等数据。我已经定义了我想要公开的所有资源,为它们提供了一个端点URL,并定义了返回的JSON资源结构 现在我想了解如何使用Oauth2保护API(我不想使用Oauth1)。我的API将同时扮演授权服务器和资源服务器的角色,这一假设正确吗?此外,我应该研究哪种补助金类型/流程 很多教程似乎都关注使用Oauth2使用facebook凭据等进行登录,但我只想使用它来保护我的API,并允许我的用户访问我的API(通过客

我正在为学习管理系统创建一个受REST启发的API。它将公开诸如用户、班级、成绩、课程等数据。我已经定义了我想要公开的所有资源,为它们提供了一个端点URL,并定义了返回的JSON资源结构

现在我想了解如何使用Oauth2保护API(我不想使用Oauth1)。我的API将同时扮演授权服务器和资源服务器的角色,这一假设正确吗?此外,我应该研究哪种补助金类型/流程

很多教程似乎都关注使用Oauth2使用facebook凭据等进行登录,但我只想使用它来保护我的API,并允许我的用户访问我的API(通过客户端或直接)。API的访问权限应遵循系统中已处理的单个用户访问权限

很抱歉,我对oauth2的理解还不够透彻,不知道该把我的研究引向何方。任何帮助都将不胜感激,任何指向正确用例的简单教程的指针也将非常有用


仅供参考-该系统是使用Drupal 6(旧的,我知道)在LAMP堆栈上构建的。

您的假设是正确的,授权服务器和资源服务器可以在同一服务器上或在同一API中

因此,OAuth2基本上是如何工作的?您有某种客户端(服务器、浏览器)授权API将使用访问令牌进行授权,以使用资源API,然后在每个资源请求的授权HTTP头中发送资源API

因此,我的成功之处在于,当用户登录时,您可以识别该用户并立即向客户端生成访问令牌。现在,您可以将一些数据放入访问令牌中,例如用户ID、权限等。现在,当访问令牌到达您的资源端点时,您可以识别用户并检查权限。此外,您还可以将访问令牌设为哑巴,使其不包含任何数据,然后当您从授权API对其进行验证时(在创建访问令牌时,您必须将有关用户的信息存储到授权数据库),您可以在响应中获得所需的信息,例如用户ID、权限等

使用哪种授权类型的流,这基本上取决于使用授权API的客户机类型以及您希望授权的安全性。例如,隐式授权用于可处理重定向的基于浏览器的客户端,例如,客户端凭据授权用于(服务器到服务器)通信


参考

首先,您可以使用现有的提供程序(如WSO2 API Manager)来支持您的系统。它有很好的文档记录,并且有许多REST API用于此目的。

为什么要将最需要的东西(用户)外包给外部提供商?也可以免费工作,对吗?为每个新用户生成一个新的客户端id和密码。然后将授予此客户端id对作用域的权限。