【发布时间】:2018-05-15 05:03:06
【问题描述】:
我正在使用Django Oauth Library。
我想要不同的身份验证和资源服务器。
在身份验证服务器上,以下是我的设置。
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.
}
在我的资源服务器上
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 = {
'RESOURCE_SERVER_INTROSPECTION_URL': 'http://localhost:8000/o/introspect/',
'RESOURCE_SERVER_AUTH_TOKEN': '3yUqsWtwKYKHnfivFcJu',
}
问题 1)
如何获取RESOURCE_SERVER_AUTH_TOKEN?
问题 2)
自检令牌后,Auth Server 在控制台日志中返回 403 Forbidden Error。
以下是获取访问令牌的流程。
我从客户端 POST 请求中将client_id, client_secret, grant_type and scopes 发送到资源服务器。我从 Resource Server 调用 AuthServer 并将响应返回给客户端。
我到底错过了什么?
【问题讨论】:
-
目前,我正在本地开发,即在我的机器上。
-
RESOURCE_SERVER_AUTH_TOKEN是什么? -
RESOURCE SERVER AUTH TOKEN 是自省端点用来验证资源服务器的令牌。但是您是否在内省或初始客户端授权授予时遇到错误?看起来您在 AUTH 服务器上遇到了错误,而不是在 Introspection 上。
-
好吧,每当我尝试授权自己时,我的资源服务器都会在本地触发查询
access_token = AccessToken.objects.select_related("application", "user").get(token=token)。由于resource_server没有保存任何令牌(所有令牌都保存在身份验证服务器中),因此它返回错误AccessToken matching query does not exist.。在处理上述异常时,又抛出了另一个异常,即 Auth Server 返回的 403 错误。 -
根据 django-oauth-toolkit 实现,它首先尝试检查其数据库中是否存在访问令牌,因此不存在“访问令牌匹配查询不存在”.. 如果访问令牌不存在,它将尝试根据设置中提供的 URL 和访问令牌使用自省端点验证令牌。所以问题出在自省端点上。您如何创建 RES SERVER AUTH TOKEN ?你能把AUTH SERVER的urlconf放上去吗
标签: python django oauth django-oauth