0

我在 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这里创建了说明:Django OAuth-分离资源和授权服务器

总而言之,我为资源服务器创建了一个超级用户,然后使用管理站点向资源服务器添加了一个应用程序,选择confidentialforclient typeauthorization codefor authorization grant type。'abc' 是我为访问令牌选择的随机字符串。

尽管如此,我仍然面临以下错误:

Introspection: Failed to get a valid response from the authentication server. Status code: 403, Reason: Forbidden.
NoneType: None

从我所描述的内容中,您知道我可能会出错的地方吗?我是否正确理解了这一点并以正确的方式创建了RESOURCE_SERVER_AUTH_TOKEN

4

1 回答 1

1

我在使用时遇到了同样的问题'RESOURCE_SERVER_AUTH_TOKEN'。所以我改为使用client_idand client_secret

继续尝试以下操作:

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

这就是它对我有用的方式。

于 2021-04-29T06:38:17.160 回答