DRF 和 Oauth2:创建资源和授权服务器
DRF and Oauth2: creating resource and authorization servers
我在django rest框架和oauth2上开发了一个类似博客的项目。我现在正尝试将资源服务器和身份验证服务器分开,如下所示:https://django-oauth-toolkit.readthedocs.io/en/latest/resource_server.html
我已经采取了以下步骤:
- 按照文档中的描述设置身份验证服务器
- 将以下内容添加到身份验证服务器settings.py
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.
}
- 按照文档中的描述设置资源服务器
- 将此添加到资源服务器中的 settings.py:
OAUTH2_PROVIDER = {
'RESOURCE_SERVER_INTROSPECTION_URL': 'http://localhost/o/introspect/',
'RESOURCE_SERVER_AUTH_TOKEN': 'abc',
}
我根据此处的说明创建了 RESOURCE_SERVER_AUTH_TOKEN based
:
总而言之,我为资源服务器创建了一个超级用户,然后使用管理站点向资源服务器添加了一个应用程序,为 client type
选择了 confidential
,为 [= 选择了 authorization code
17=]。 'abc' 是我为访问令牌选择的随机字符串。
尽管如此,我仍然面临以下错误:
Introspection: Failed to get a valid response from the authentication server. Status code: 403, Reason: Forbidden.
NoneType: None
您是否知道我所描述的内容可能哪里出错了?我是否正确理解了 并以正确的方式创建了 RESOURCE_SERVER_AUTH_TOKEN
?
我在使用 'RESOURCE_SERVER_AUTH_TOKEN'
时遇到了同样的问题。所以我改用 client_id
和 client_secret
.
继续尝试以下操作:
OAUTH2_PROVIDER = {
'RESOURCE_SERVER_INTROSPECTION_URL': 'http://127.0.0.1:8000/o/introspect/',
'RESOURCE_SERVER_INTROSPECTION_CREDENTIALS':
(
client_id,
client_secret
),
}
这就是我的工作方式。
我在django rest框架和oauth2上开发了一个类似博客的项目。我现在正尝试将资源服务器和身份验证服务器分开,如下所示:https://django-oauth-toolkit.readthedocs.io/en/latest/resource_server.html
我已经采取了以下步骤:
- 按照文档中的描述设置身份验证服务器
- 将以下内容添加到身份验证服务器settings.py
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.
}
- 按照文档中的描述设置资源服务器
- 将此添加到资源服务器中的 settings.py:
OAUTH2_PROVIDER = {
'RESOURCE_SERVER_INTROSPECTION_URL': 'http://localhost/o/introspect/',
'RESOURCE_SERVER_AUTH_TOKEN': 'abc',
}
我根据此处的说明创建了 RESOURCE_SERVER_AUTH_TOKEN based
:
总而言之,我为资源服务器创建了一个超级用户,然后使用管理站点向资源服务器添加了一个应用程序,为 client type
选择了 confidential
,为 [= 选择了 authorization code
17=]。 'abc' 是我为访问令牌选择的随机字符串。
尽管如此,我仍然面临以下错误:
Introspection: Failed to get a valid response from the authentication server. Status code: 403, Reason: Forbidden.
NoneType: None
您是否知道我所描述的内容可能哪里出错了?我是否正确理解了 RESOURCE_SERVER_AUTH_TOKEN
?
我在使用 'RESOURCE_SERVER_AUTH_TOKEN'
时遇到了同样的问题。所以我改用 client_id
和 client_secret
.
继续尝试以下操作:
OAUTH2_PROVIDER = {
'RESOURCE_SERVER_INTROSPECTION_URL': 'http://127.0.0.1:8000/o/introspect/',
'RESOURCE_SERVER_INTROSPECTION_CREDENTIALS':
(
client_id,
client_secret
),
}
这就是我的工作方式。