DRF 和 Oauth2:创建资源和授权服务器

DRF and Oauth2: creating resource and authorization servers

我在django rest框架和oauth2上开发了一个类似博客的项目。我现在正尝试将资源服务器和身份验证服务器分开,如下所示:https://django-oauth-toolkit.readthedocs.io/en/latest/resource_server.html

我已经采取了以下步骤:

  1. 按照文档中的描述设置身份验证服务器
  2. 将以下内容添加到身份验证服务器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.
}
  1. 按照文档中的描述设置资源服务器
  2. 将此添加到资源服务器中的 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_idclient_secret.

继续尝试以下操作:

OAUTH2_PROVIDER = {
    'RESOURCE_SERVER_INTROSPECTION_URL': 'http://127.0.0.1:8000/o/introspect/',
    'RESOURCE_SERVER_INTROSPECTION_CREDENTIALS':
        (
            client_id,
            client_secret
        ),
}

这就是我的工作方式。