问题标签 [django-oauth-toolkit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
271 浏览

django - 无法设置 django-oauth-toolkit 身份验证

我将限制我的工作rest_framework.views.APIView继承类,只对经过身份验证的用户可见。
我做了这些修改:

  1. 添加authentication_classespermission_classes我的班级:
  1. 从 django-oauth-toolkit 获得 access_token:
  1. 尝试请求视图而不设置access_token
  1. 尝试了一个新的请求access_token

我应该做更多的事情来启用 access_token 身份验证吗?

注意:我已经在环境中安装了这些库:

注2:忘记说了rest_frameworkoauth2_provider已经添加到INSTALLED_APPS。

重要编辑:
仅当使用“客户端凭据授予”进行身份验证时才存在此问题。在下面检查我自己的答案。

0 投票
1 回答
143 浏览

django-oauth-toolkit - Django oauth2 工具包提供者,授予第三个应用程序访问权限

Django 站点充当 oauth2 提供者。应用程序的设置tomcat_app 如下所示:

在此处输入图像描述

每当有人尝试登录 tomcat_app 时,用户都会被重定向到 Django。如果用户可以提供有效的凭据,他们将被重定向到 tomcat_app。到目前为止,一切都很好。Tomcat_app 进一步提供了一个知道 oauth2 工作流的 REST API。如果 reqeust 提供了有效的令牌请求将被接受。

我心中的结: 第三台服务器也应该被授予使用tomcat_app rest api。是否有可能

  • 在 django 中设置一个新用户externalapp_user/externalapp_password
  • tomcat_app通过将新用户凭据发送到 django 来获取密钥

我感到困惑的是,如何正确发送凭据以及如何处理重定向 url。我正在寻找类似于client type: public和的东西Authorization grant type: Resource ownder password-based

0 投票
1 回答
621 浏览

python - Django Oauth Toolkit:用户数据自省

当前场景:

我正在使用 Introspect 来验证身份验证服务器上的访问令牌。此调用仅从身份验证服务器返回用户的“用户名”并将其保存在资源服务器中。认证服务器和资源服务器上同一用户的Id不一定相同。

所需场景:

我想接收有关用户的更多数据(电子邮件、电话号码、地址等)并将其保存在资源服务器中。

到目前为止我做了什么:

我修改了django-oauth-toolkit/oauth2_provider/views/introspect.py/ get_token_response返回我需要的数据。

剩下的:

如何将这些数据保存在资源服务器中?还是在我需要用户数据时对身份验证服务器进行 api 调用更好?

0 投票
1 回答
165 浏览

django - Django OAuth 工具包:自动为新用户生成 client_id 和 client_secret?

我正在使用 OAuth 客户端凭据为我的客户提供对我们 API 的访问权限,以便他们可以与他们的系统集成。

要注册应用程序并生成 client_id 和 client_secret,Django-oauth-toolkit 文档说o/applications/register/必须填写表格(此处的文档)。是否可以在我的用户注册时自动向他们发出 client_id 和 client_secret 而不是将他们定向到此表单?

0 投票
1 回答
109 浏览

django - Django-oauth-toolkit 将 client_id 和 client_secret 存储在哪里?

当一个应用程序被创建并使用 django-oauth-tookit 发出 client_id 和 client_secret 时,它在哪里存储 client_id 和 client_secret?如何手动检索/创建它们?

0 投票
1 回答
130 浏览

python - 版本冲突 django-oauth-toolkit>0.12.0 和 urllib3==1.25.11

为什么我在将 Django 从版本 1.11.29 更新到 2.0.13 时遇到问题。将库 django-oauth-toolkit 更新到版本 1.2.0 - 版本支持 Django 2.0 时,我收到一个错误: __version__ = pkg_resources.require("django-oauth-toolkit")[0].version pkg_resources.ContextualVersionConflict: (urllib3 1.25.11 (/.virtualenvs/django-oauth-tookit-conflict/lib/python3.6/site-packages), Requirement.parse('urllib3<1.25,>=1.21.1'), {'requests'})

0 投票
1 回答
125 浏览

python - 版本冲突 django-oauth-toolkit>0.12.0 和 idna==3.1

为什么我在将 Django 从版本 1.11.29 更新到 2.0.13 时遇到问题。将库更新django-oauth-toolkit到版本 1.2.0 - 版本支持 Django 2.0 时,我收到此错误:

0 投票
1 回答
361 浏览

python - Django OAuth 工具包 - 自省请求:“未提供身份验证凭据。”

早上好或下午好,甚至晚上好!

我一直在尝试使用带有 Django 的 OAuth Toolkit来实现资源服务器与身份验证服务器的分离,但我被卡住了

试过:

首先,我已经尝试过以下方法:

  1. 按照本教程的教程进行操作,它适用于使用 python manage.py runserver服务项目。

  2. 整个结构是我使用Postmen作为客户端并请求资源服务器并使用身份验证服务器检查经过身份验证的用户,因此资源和身份验证服务器之间存在自省过程

问题:

正如我所提到的,整个想法只有在我使用python manage.py runserver服务项目时才有效。当使用NginxGunicorn在Docker-Compose中部署项目来服务项目时,头痛就来了。

这是最后一个错误- 使用 url:/o/introspect/ 超出了最大重试次数

当我追踪到根时- Introspection: Failed POST to localhost:8000/o/introspect/ in token lookup

这是客户端应用程序中的错误- “未提供身份验证凭据。”

我发现当访问令牌过期撤销并且系统尝试从身份验证服务器获取对资源服务器的新访问令牌时会发生此问题。

不知何故,自省过程因我未知的原因而失败!

以前有人撞过这堵墙吗?

编辑:(2021 年 3 月 4 日,星期四)

我找到了另一个与确切问题更相关的原因!

docker compose创建服务时,每个服务都服务于一个由项目(Django)图像组成的容器。因此,每个项目都是相互隔离的!

这导致 A 项目可能更难向 B 项目请求,因为 B 项目的端口在 A 项目中无法到达

一个潜在的解决方案可能是使用 Nginx 服务器代理名称(这将与 docker compose 中的每个服务的名称相同)来发出请求。

我还在努力解决这个问题!如果有人可以提供帮助,那将不胜感激!

编辑:(台湾 2021 年 3 月 4 日星期四下午 5:07)问题已解决

解决方案已演示!

0 投票
1 回答
167 浏览

django - 刷新令牌宽限期的安全隐患

我有一个使用django-oauth-toolkit构建的 OAuth2 服务器,默认情况下,刷新令牌在使用时会立即被撤销。这意味着如果客户端使用刷新令牌请求新的访问令牌,但由于网络中断而没有收到响应,他们将被迫重新进行身份验证。

该库提供的设置REFRESH_TOKEN_GRACE_PERIOD_SECONDS是在使用刷新令牌与其撤销之间等待的时间量。如果客户端使用刷新令牌但未收到响应,则该原始刷新令牌仍然有效REFRESH_TOKEN_GRACE_PERIOD_SECONDS,允许客户端无需重新验证即可获得新的访问令牌。

据我所知,使用时立即撤销刷新令牌的目的是防止重放攻击,但由于该授权服务器专门使用https,因此似乎足以防御此类攻击

是否存在因刷新令牌撤销的宽限期而导致的其他漏洞?从不撤销刷新令牌会有什么影响?

0 投票
0 回答
41 浏览

python - 解决错误 django-oauth-toolkit: raise AppRegistryNotReady("Models are not loaded yet.")

我如何解决错误: raise AppRegistryNotReady("Models are not loaded yet.") django.core.exceptions.AppRegistryNotReady: Models are not loaded yet. 我有:

  1. Django==2.0.13
  2. django-oauth-toolkit==1.2.0
  3. 蟒蛇==3.6

我运行命令 manage.py runserver 并接收回溯: