Как обновить OAuth2-токен с помощью Django OAuth Toolkit в пользовательских представлениях?

Что я делаю?

  1. У меня есть требование, где будет отдельный сервер авторизации и сервер ресурсов.
  2. Я использую тип гранта на основе пароля владельца ресурса.
  3. Я реализовал Custom Introspection View и Get Token View. (Следуя this и this: я использовал базовый класс DOT для реализации своего собственного API интроспекции, добавлю его в конце)
  4. .
  5. Для обоих созданных мной пользовательских представлений я добавил его в urls.py вручную, ссылаясь на него.

Что происходит сейчас?

  1. Оказалось, что для обновления токена нужно использовать тот же /token/ url, который вы использовали для получения токена доступа. Единственная разница заключается в том, что при обновлении токена нужно изменить тип гранта на refresh_token.
  2. .
  3. Он не обрабатывается, так как я не реализовал или не могу реализовать обновление токена. Меня устраивает существующий внутренний механизм обновления токена, поскольку я не требую, чтобы в нем были специальные/настроенные вещи, но поскольку я использую пользовательское представление токена, grand_type = refresh_token не попадает в представление oauthlibs refresh_token. (Мое наблюдение)
  4. .

urls.py

from django.contrib import admin
from django.urls import path, include
from project.apis import (
    ClientCreateTokenView,
    ResourceServerIntrospectView
)

urlpatterns = [
    path('admin/', admin.site.urls),
    path('o/token/', ClientCreateTokenView.as_view(), name='token_obtain_pair'),
    path('o/introspect/', ResourceServerIntrospectView.as_view(), name='introspect_token'),
    path('o/', include('oauth2_provider.urls', namespace='oauth2_provider')),
]

apis.py

Я знаю, что я не совсем следую стандартам и размещаю здесь пользовательские вещи для дополнительных проверок, но это просто мой случай использования. Я не могу найти ничего о refresh token на DOT, хотя это известный и поддерживаемый пакет.

Вернуться на верх