【问题标题】:How to use OAuth2 within django-rest-framework?如何在 django-rest-framework 中使用 OAuth2?
【发布时间】:2015-04-29 02:42:53
【问题描述】:

我一直在尝试将 OAuth2 身份验证集成到我的 drf 应用程序中。鉴于我的应用还不需要前端,我使用的是可浏览的 API。 DRF 和OAuth2 provider package 应该无需太多配置即可协同工作,如tutorial 中所述。

我应该提到教程中的所有步骤都在工作(因此我可以从命令行访问应用程序)但是当我尝试从可浏览 API 执行此操作时,我看不到任何访问令牌的请求或类似的东西。

我认为 DRF 实际上并没有为 OAuth2 身份验证的前端部分提供流程,但我只是想知道是否有人设法使它工作(因为现在我正在使用 SessionAuthentication)。

谢谢。

【问题讨论】:

  • 我有类似的问题 - 你设法运行 DRF+OAuth2+Angularjs 吗?
  • @pplonski :是的,我做到了。我在我的 django 项目中使用了第 3 方库,以便拥有 OAuth 功能。这是 DRF 的完成,不是我用 DRF 构建的 API 的一部分。所以我无法使用 OAuth2 登录到可浏览的 API。在 Angular 中,我使用了 restangular,它非常适合请求。基本上,我拨打电话以获取访问令牌,并将其设置为 restangular 中的标头。所有进一步的请求都经过“身份验证”。如果您还有任何问题或需要一些代码,我很乐意提供帮助。
  • 谢谢!因此,您使用自己的 Angular 代码编写来处理 OAuth 授权 - 您是否尝试使用例如 github.com/Tivix/angular-django-registration-auth
  • @pplonski 是的,我几乎编写了代码,灵感来自像这样的教程:medium.com/opinionated-angularjs/…。据我所知,您的示例与我所做的非常相似:请求令牌,将获得的令牌保存在 session/cookies 中,并将其设置为标头,以便在后续请求中使用。我目前正在努力使我的实现更不容易出错。

标签: authentication oauth-2.0 django-rest-framework


【解决方案1】:

OAuth2 与基本身份验证和基于 cookie 的身份验证不同,它在浏览器中不容易工作。在对请求进行身份验证时,它依赖于存在的 Authorization 标头(具有 OAuth 类型),并且无法使用浏览器轻松填写。

会话身份验证依赖于大多数浏览器很容易支持的 cookie,建议用于与与前端位于同一域的 API 进行交互。

基本身份验证也依赖于Authorization 标头,但使用大多数浏览器支持的Basic 类型。

【讨论】:

  • 好的,这澄清了很多事情(并证实了 DRF 的 API 永远不会使用 OAuth2 的事实)。但我仍然有点困惑,这将如何在最终的、真实的应用程序中工作(我计划在其中使用 Angular)。
  • 为了补充大家的意见,显然缺乏在线资源来展示如何使用浏览器移动前端(React、Angluar 等)实现 DRF oauth2。
猜你喜欢
  • 2016-08-27
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
  • 2015-09-08
  • 1970-01-01
  • 2013-07-07
  • 2020-10-07
  • 2021-05-23
相关资源
最近更新 更多