2015-01-21 41 views
2

我正在为学习管理系统创建一个REST灵感的API。它将公开用户,类,等级,课程等数据。我已经定义了所有我想公开的资源,给出了每个端点的URL,并定义了返回的JSON资源结构。了解Oauth2

我现在想了解如何使用Oauth2来保护API(我不想使用Oauth1)。我是否正确地假设我的API将扮演资源服务器的授权服务器&的一部分?另外,我应该研究什么样的授权类型/流程?

很多教程似乎都侧重于使用Oauth2登录使用Facebook的凭据等 - 但我只是想用它来保护我的API,并允许我的用户访问我的API(通过客户端或直接) 。 API的访问权限应该遵循已经在我们的系统中处理的个人用户访问权限。

对不起散落枪问题 - 我只是不明白oauth2足以知道在哪里指导我的研究。任何帮助将不胜感激,任何指向正确用例的简单教程的指针都会很棒。

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

回答

3

那么你的假设是正确的授权服务器和资源服务器可以在同一台服务器上或在同一个API。

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

所以我成功的是,当用户登录时,您可以识别用户并立即生成访问令牌给客户端。现在你可以在Access Token中放入一些数据,例如userId,权限等。现在,当Access Token点击您的资源端点时,您可以识别用户并检查权限。你也可以使访问令牌愚蠢,所以它不包含任何数据,然后当你从授权API验证它(在访问令牌创建你必须存储关于用户授权数据库的信息),你可以得到你需要的信息在响应例如userId,权限等

要使用什么授权类型流,这基本上是质疑什么样的客户端使用您的授权API以及授权是多么安全。例如。隐式授予是针对基于浏览器的客户端,其可以处理重定向和例如客户端凭证授予用于(服务器到服务器)通信。

参考here

+0

这是假设正确吗?对于每个新用户,都会生成一个新的client_id和secret。然后,这个client_id将被授予范围权限。 – 2017-07-09 17:35:41

0

首先像WSO2 API Manager,您可以使用现有的供应商支持系统。它有很好的文档记录,并有许多REST API。

+0

为什么要将最想要的用户外包给外部提供商?也可以免费工作。 – 2017-07-09 17:34:33