Как обновить OAuth2-токен с помощью Django OAuth Toolkit в пользовательских представлениях?
Что я делаю?
- У меня есть требование, где будет отдельный сервер авторизации и сервер ресурсов.
- Я использую тип гранта на основе пароля владельца ресурса.
- Я реализовал Custom Introspection View и Get Token View. (Следуя this и this: я использовал базовый класс DOT для реализации своего собственного API интроспекции, добавлю его в конце) .
- Для обоих созданных мной пользовательских представлений я добавил его в urls.py вручную, ссылаясь на него.
Что происходит сейчас?
- Оказалось, что для обновления токена нужно использовать тот же /token/ url, который вы использовали для получения токена доступа. Единственная разница заключается в том, что при обновлении токена нужно изменить тип гранта на refresh_token. .
- Он не обрабатывается, так как я не реализовал или не могу реализовать обновление токена. Меня устраивает существующий внутренний механизм обновления токена, поскольку я не требую, чтобы в нем были специальные/настроенные вещи, но поскольку я использую пользовательское представление токена, grand_type = refresh_token не попадает в представление oauthlibs refresh_token. (Мое наблюдение) .
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, хотя это известный и поддерживаемый пакет.