Pyt*_*ast 4 python django oauth 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',
),
}
# ############## OAUTH SETTINGS ###################
OAUTH2_PROVIDER = {
'RESOURCE_SERVER_INTROSPECTION_URL': 'http://localhost:8000/o/introspect/',
'RESOURCE_SERVER_AUTH_TOKEN': '3yUqsWtwKYKHnfivFcJu',
Run Code Online (Sandbox Code Playgroud)
}
问题1)
我如何获得RESOURCE_SERVER_AUTH_TOKEN?
问题2)
内省令牌后,Auth Server在控制台日志中返回403 Forbidden Error。
以下是获取访问令牌的流程。
我client_id, client_secret, grant_type and scopes从客户端POST请求中获取到资源服务器。我从资源服务器调用AuthServer,并将响应返回给客户端。
我到底在这里想念什么?
根据django-oauth-toolkit的实现,资源服务器首先尝试检查访问令牌在其数据库中是否可用。
如果不存在访问令牌,它将检查自省URL和自省令牌在设置中是否可用。如果自省设置可用,那么资源服务器将尝试使用自省端点来验证用户令牌。
因此,问题似乎在于,由于将权限设置为IsAuthenticated,因此AUTH SERVER和DRF可能会重新播放403 Forbidden。这可能是由于无效的令牌或无效的用户引起的。
因此,为资源服务器创建一个用户,然后为资源服务器用户创建一个应用程序。
创建应用程序,
client_type=Application.CLIENT_CONFIDENTIAL
authorization_grant_type=Application.GRANT_AUTHORIZATION_COD??E
Run Code Online (Sandbox Code Playgroud)
并通过管理站点生成令牌,并使用新创建的令牌更新资源服务器的INTROSPECTION设置。确保在创建令牌时放置了适当的作用域。
| 归档时间: |
|
| 查看次数: |
1030 次 |
| 最近记录: |