api - 了解 Oauth2

标签 api oauth-2.0

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

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

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

抱歉,我提出了分散枪问题 - 我只是不太了解 oauth2,不知道该在哪里指导我的研究。任何帮助将不胜感激,任何指向正确用例的简单教程的指示也将非常有用。

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

最佳答案

你的假设是正确的,授权服务器和资源服务器可以位于同一服务器上或同一 API 中。

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

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

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

引用here

关于api - 了解 Oauth2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28066784/

相关文章:

sql - 使用 REST API 的 Linq to SQL?

javascript - 保护公共(public) REST API 的安全

javascript - 为什么 Swagger 规范不提供 OAuth2 身份验证的 clientId?

reactjs - 从google oauth2 web客户端requestAccessToken函数获取c.trim错误

c# - 如何为 GoogleWebAuthorizationBroker.AuthorizeAsync 设置 return_uri?

c# - 如何获取 google oauth 的访问 token ?

javascript - 将弹出窗口放置在从获取查询(GeoJSON 响应)检索到的点上

php - 调用 Telegram API 来创建 feedreader 机器人

python - 您如何使用 Python 区分 Tumblr 中的原始帖子和转发?

oauth-2.0 - 使用 oAuth 和 SAML 代表 Azure AD