标签: django-oauth

无法为API设置'DEFAULT_AUTHENTICATION_CLASSES'导入'oauth2_provider.ext.rest_framework.OAuth2Authentication'

这是我第一次使用django rest和Django Oauth工具包我正在遵循本教程 oauth2-with-django-rest-framework 但是当我运行python manage.py migrate时,我收到以下错误:

ImportError:无法为API设置'DEFAULT_AUTHENTICATION_CLASSES'导入'oauth2_provider.ext.rest_framework.OAuth2Authentication'.ImportError:没有名为ext.rest_framework的模块.

出了什么问题?我应该安装另一个模块吗?我的虚拟环境包含:

CERTIFI == 2017年4月17日

chardet的== 3.0.4

Django的== 1.11.2

Django的扩展== 1.8.1

Django的OAuth的工具== 1.0.0

djangorestframework == 3.6.3

IDNA == 2.5

oauthlib == 2.0.2

pytz == 2017.2

请求== 2.18.1

6 == 1.10.0

Unidecode == 0.4.21

urllib3 == 1.21.1

django importerror oauth-2.0 django-rest-framework django-oauth

16
推荐指数
1
解决办法
4977
查看次数

使用Django OAuth2 Toolkit生成单一访问令牌

我正在使用最新的Django OAuth2 Toolkit(0.10.0)和Python 2.7,Django 1.8和Django REST框架3.3

使用时grant_type=password,我注意到一些奇怪的行为,任何时候用户要求新的访问令牌:

curl -X POST -d "grant_type=password&username=<user_name>&password=<password>" -u"<client_id>:<client_secret>" http://localhost:8000/o/token/
Run Code Online (Sandbox Code Playgroud)

一个新的访问令牌和刷新令牌创建.在令牌超时之前,旧的访问和刷新令牌仍然可用!

我的问题:

  • 我需要的是每次用户请求新的访问令牌时,旧的访问令牌将变为无效,无法使用并将被删除.
  • 此外,有没有一种方法,密码grunt类型不会创建刷新令牌.我在我的申请中没有任何用处.

我发现的一个解决方案是REST Framework OAuth一次为一个访问令牌提供配置.我并不急于使用该提供商,但我可能不会有选择.

python django oauth-2.0 django-rest-framework django-oauth

12
推荐指数
2
解决办法
4265
查看次数

Django OAuth Toolkit - 注册用户

我已经浏览了Django OAuth Toolkit的提供者和资源的文档,但我能找到的只是how to 'authenticate' a user,而不是register用户的方式.

我可以在我的机器上设置所有内容,但不知道如何使用用户名和密码注册用户.我知道我错过了一些非常微妙的东西.如何准确注册用户并获取访问令牌以回复与我的资源服务器通信.

要么

是不是我首先使用普通的Django机制注册用户,然后获得相同的令牌?

python django django-registration django-rest-framework django-oauth

7
推荐指数
2
解决办法
2508
查看次数

Django-OAuth-ToolKit:使用 OAuth2.0 的客户端凭据授予类型为多个资源/服务生成访问令牌

我有几个后端 API,它们是 Django 项目。他们有一个 UI(单页应用程序)和一个基于用户名密码的登录。

我的客户通常是开发人员,他们不想要 UI,他们想要的只是访问后端 API,他们可以构建自己的仪表板等。他们希望将 API 与后端系统集成。

问题

问题 1. 我打算使用 django-oauth-tool kit ,在我看来,客户端凭据授予类型适合此用例。我对吗 ?

为了进行实验,我在本地运行在 8000 端口上启动了一个单独的 oauth 服务器,我在 8001 上启动了资源服务器 (r1),在 8002 上启动了资源服务器 (r2)。

第1步 :

我去了oauth服务器的管理面板,为资源r1创建了一个用户u1,为资源r2创建了一个用户u2。我去了管理面板中的应用程序模块,在具有授权类型资源所有者密码的应用程序中注册了 r1 和 r2。为了生成访问令牌,我调用了令牌端点

POST -d "grant_type=password&username=u1&password=u1password" -u "clientid of R1:clientsecre of fR1" http://localhost:8000/o/token/
Run Code Online (Sandbox Code Playgroud)

我得到了访问令牌

{"access_token": "KdAOMZBiMomVxpvjAWErwVGog6NRRH", "expires_in": 86400, "token_type": "Bearer", "scope": "read write introspection", "refresh_token": "ffgkZZ5NtVFh4REs0TbFAALNkJqXVQ"}
Run Code Online (Sandbox Code Playgroud)

第2步:

说上面我为资源服务器 R1 生成的访问令牌,所以我去了 R1 的设置文件并添加了这个令牌以进行自省

OAUTH2_PROVIDER = {

'RESOURCE_SERVER_INTROSPECTION_URL': 'http://localhost:8000/o/introspect/',
'RESOURCE_SERVER_AUTH_TOKEN': '9b2uVud7WXHEdyolznvvkM3KwWfkVe',  # OR this but not both:
#'RESOURCE_SERVER_INTROSPECTION_CREDENTIALS': ('5sRVXLoTQj9vlkLWaziIMZrgra1keupWIQ2On2hX','5jwMxls1JiAiQiNVnRTtbjmzgRO20FEHD0BBdiSAwvSL1XswZKqglDRke2L8Ig77ol7OE3ZdsA9SE7sry0u3BXwd1OvfFfhDVJFSLWlPG6g1vB3w4ZFc1g8ZwgzXJooc'),
Run Code Online (Sandbox Code Playgroud)

} …

security django oauth-2.0 django-rest-framework django-oauth

7
推荐指数
1
解决办法
2127
查看次数

如何在 django Rest 框架中实现 google 和 facebook oauth2?

我是一名 Nodejs 开发人员,但目前正在迁移到 django(作为一名 Python 爱好者)。我正在尝试实施OAuth2Django Rest Framework但我不知道如何开始。

在nodejs中,有一个维护良好的passportjs库,并且它为每种可能的身份验证类型提供了策略。Django 休息框架怎么样?用户名/密码身份验证看起来很简单,但 oauth2 并没有很好地涵盖。

在这里的DRF文档中,提到了两个用于 oauth 的库。第一个是django-oauth-toolkit ,它维护得很好,但是在阅读文档之后,我似乎不太了解,它甚至没有谈论 googl/facebook oauth。无论如何,我不确定它是用来做什么的。第二个是django-rest-framework-social-oauth2,看起来很简单,但已经一年多没有碰过了,可能不再维护了。

那么,你们如何在 DRF 项目中执行 oauth2 ?

django oauth-2.0 django-rest-framework django-oauth

5
推荐指数
1
解决办法
1817
查看次数

保护Django OAuth工具包视图的安全

我们希望在后端实现Django OAuth,以集成Alexa和其他第三方API。我们一直在他们网站上的教程(http://django-oauth-toolkit.readthedocs.io/en/latest/tutorial/tutorial.html)上进行学习,但到目前为止却遇到了一个安全问题,使我们无法逃脱:

是否存在任何用户都可以访问的安全问题https://<oursite.com>/o/applications?如果是这样,需要采取什么步骤来防止用户访问这些视图?

关于SO的唯一相关问题并不是特别有用:

在Django OAuth Toolkit中安全创建新应用程序

禁用或限制/ o / applications(django rest框架,oauth2)

python django oauth alexa django-oauth

4
推荐指数
2
解决办法
808
查看次数

Django OAuth-独立的资源和授权服务器

我正在使用Django Oauth库

我想使用其他身份验证和资源服务器。

在Auth Server上,以下是我的设置。

INSTALLED_APPS = [
    ...


    'oauth2_provider',
    'rest_framework',
]


REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'oauth2_provider.contrib.rest_framework.OAuth2Authentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
}

# ############## OAUTH SETTINGS ###################

OAUTH2_PROVIDER = {
    'SCOPES': {'users': 'user details', 'read': 'Read scope', 'write': 'Write scope', 'groups': 'Access to your groups', 'introspection': 'introspection'},
    'ACCESS_TOKEN_EXPIRE_SECONDS': 86400,  # 1 Day.
}
Run Code Online (Sandbox Code Playgroud)

在我的资源服务器上

INSTALLED_APPS = [
    ...


    'oauth2_provider',
    'rest_framework',
]


REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'oauth2_provider.contrib.rest_framework.OAuth2Authentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
}

# ############## …
Run Code Online (Sandbox Code Playgroud)

python django oauth django-oauth

4
推荐指数
1
解决办法
1030
查看次数

获取权限问题将经过身份验证的请求发送到OAuth2.0 Django休息Framwork

我已经将OAuth2.0与django-rest-framework集成在一起.当我将经过身份验证的请求发送到基于类的视图时,我得到了这个

{
    "detail": "You do not have permission to perform this action."
}
Run Code Online (Sandbox Code Playgroud)

settings.py

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'oauth2_provider.contrib.rest_framework.OAuth2Authentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    )
}
Run Code Online (Sandbox Code Playgroud)

views.py

    from rest_framework import permissions
    from oauth2_provider.contrib.rest_framework import TokenHasReadWriteScope
    class LogoutView(APIView):
        """
            This will help in logout of user.
        """
        authentication_classes = ()
        permission_classes = (permissions.IsAuthenticated, TokenHasReadWriteScope)

        def get(self, request):
            return Response({'s': 'd'})
Run Code Online (Sandbox Code Playgroud)

urls.py

from django.urls import path, re_path
from accounts.views import SignUpView, LoginView, LogoutView

urlpatterns = [
    path('signup/', SignUpView.as_view()),
    path('login/', LoginView.as_view()),
    path('logout/', LogoutView.as_view()), …
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework django-oauth

4
推荐指数
1
解决办法
307
查看次数

在 Django REST Framework 的管理面板中隐藏令牌表

我正在使用Django REST Framework和在我的应用程序中Django-OAuth-toolkit启用OAuth2身份验证。

由于使用OAuth2 后,我不再需要基于令牌的身份验证,因此不需要令牌表/模型。

有时在看到两个不同的处理令牌的模块后,我感到很困惑。

因此,我想Token从 Django 的管理面板中删除/隐藏表。

这是我的settings.py文件

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'oauth2_provider.contrib.rest_framework.OAuth2Authentication'
    ),
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated'
    ],
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10
}
Run Code Online (Sandbox Code Playgroud)

我已经删除了基于令牌的身份验证,但Token管理面板中仍然有表格

在此处输入图片说明

django django-rest-framework django-oauth

4
推荐指数
2
解决办法
2167
查看次数

Django OAuth Toolkit:无法导入ext.rest_framework

我正在尝试为我的Django REST API设置OAuth2身份验证系统(使用DjangoRestFramework和Django-Oauth-Toolkit).我根据官方文档写了一切,但是系统给出错误"无法导入ext.rest_framework"

这是我的setting.py文件:

OAUTH2_PROVIDER = {
    # this is the list of available scopes
    'SCOPES': {'read': 'Read scope', 'write': 'Write scope', 'groups': 'Access to your groups'}
}


REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'oauth2_provider.ext.rest_framework.OAuth2Authentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',),
    'PAGE_SIZE': 10
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

django oauth-2.0 django-rest-framework django-oauth

3
推荐指数
1
解决办法
313
查看次数