gpt4 book ai didi

python - 保护 Django OAuth 工具包 View

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:16 25 4
gpt4 key购买 nike

我们希望在后端实现 Django OAuth,以便集成 Alexa 和其他第 3 方 API。我们一直在按照他们网站 ( http://django-oauth-toolkit.readthedocs.io/en/latest/tutorial/tutorial.html ) 上的教程进行操作,但遇到了一个迄今为止我们没有发现的安全问题:

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

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

Secure creation of new applications in Django OAuth Toolkit

Disable or restrict /o/applications (django rest framework, oauth2)

最佳答案

我正在做类似的事情,我相信任何人都可以看到/o/applications 是一个安全问题 - 据我所知,该页面是一个开发实用程序,而不是生产页面。事实上,在the django-oauth-toolkit documentation ,他们有一个代码示例,对 View 的访问受到更多限制。

from django.conf.urls import url
import oauth2_provider.views as oauth2_views
from django.conf import settings
from .views import ApiEndpoint

# OAuth2 provider endpoints
oauth2_endpoint_views = [
url(r'^authorize/$', oauth2_views.AuthorizationView.as_view(), name="authorize"),
url(r'^token/$', oauth2_views.TokenView.as_view(), name="token"),
url(r'^revoke-token/$', oauth2_views.RevokeTokenView.as_view(), name="revoke-token"),
]

if settings.DEBUG:
# OAuth2 Application Management endpoints
oauth2_endpoint_views += [
url(r'^applications/$', oauth2_views.ApplicationList.as_view(), name="list"),
url(r'^applications/register/$', oauth2_views.ApplicationRegistration.as_view(), name="register"),
url(r'^applications/(?P<pk>\d+)/$', oauth2_views.ApplicationDetail.as_view(), name="detail"),
url(r'^applications/(?P<pk>\d+)/delete/$', oauth2_views.ApplicationDelete.as_view(), name="delete"),
url(r'^applications/(?P<pk>\d+)/update/$', oauth2_views.ApplicationUpdate.as_view(), name="update"),
]

# OAuth2 Token Management endpoints
oauth2_endpoint_views += [
url(r'^authorized-tokens/$', oauth2_views.AuthorizedTokensListView.as_view(), name="authorized-token-list"),
url(r'^authorized-tokens/(?P<pk>\d+)/delete/$', oauth2_views.AuthorizedTokenDeleteView.as_view(),
name="authorized-token-delete"),
]

urlpatterns = [
# OAuth 2 endpoints:
url(r'^o/', include(oauth2_endpoint_views, namespace="oauth2_provider")),

url(r'^admin/', include(admin.site.urls)),
url(r'^api/hello', ApiEndpoint.as_view()), # an example resource endpoint
]

revoke token view is part of the RFC ,所以需要一个。我在我的应用程序中采用了类似的方法,仅包含 AuthorizationView、TokenView 和 RevokeTokenView。

希望对您有所帮助!

关于python - 保护 Django OAuth 工具包 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40666252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com