了解 Oauth2

Understanding Oauth2

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

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

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

对于散弹枪问题,我深表歉意 - 我只是对 oauth2 了解不够,不知道该将我的研究导向何处。任何帮助将不胜感激,任何指向正确用例的简单教程的指针也将非常有用。

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

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

那么 OAuth2 基本上是如何工作的 你有某种客户端(服务器,浏览器)授权 API 将使用访问令牌授权使用你的资源 API 然后在授权中发送HTTP header 每个资源请求。

所以我成功的是,当用户登录时,您识别用户并立即为客户端生成访问令牌。现在您可以将一些数据放入访问令牌中,例如userId、权限等。现在,当访问令牌到达您的资源端点时,您可以识别用户并检查权限。您也可以将访问令牌设置为哑巴,这样它就不会包含任何数据,然后当您从授权 API 验证它时(在创建访问令牌时,您必须将有关用户的信息存储到授权数据库),您可以获得您需要的有关回复的信息,例如userId、权限等

使用什么授权类型流程,这基本上取决于什么样的客户正在使用您的授权 API 以及您希望授权的安全性。例如。隐式授权适用于可以处理重定向的基于浏览器的客户端,例如客户端凭据授予用于 (server-to-server) 次通信。

参考here

首先,您可以使用 WSO2 API Manager 等现有提供商来支持您的系统。它有据可查,并为此提供了许多 REST APIs。