Django позволяет реализовать многопользовательский социальный вход (арендаторы предоставляют свои собственные учетные данные OAuth2)

У меня есть многопользовательское приложение Django, созданное с помощью пакета django-tenants. Мой социальный логин обрабатывается python-social-auth (точнее drf_social_oauth2).

Я хотел бы позволить арендаторам предоставлять свои собственные учетные данные Google OAuth2 (client_id и client_secret) и проходить аутентификацию с их помощью. Таким образом, арендатор сможет контролировать, кому разрешено использовать социальный логин, например, ограничить вход для своих «внутренних пользователей».

Могу ли я каким-то образом вводить учетные данные Google OAuth2 арендаторов в ConvertTokenView() на основе схемы, по которой выполняется запрос?

Пример псевдокода:

class ConvertTokenView(request):

  def post(self, request):
    tenant = get tenant based on schema
    backend.set_client_id(tenant.google_client_id)
    backend.set_client_secret(tenant.google_client_secret)
    backend.authenticate(request.body)
  
    return tokenResponse

В качестве альтернативы я думал о динамическом изменении следующих двух настроек settings.py:

# these are global, but i'd like each tenant to have their own creds
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = "<google_client_id>"
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = "<google_client_secret>"

Этот альтернативный метод не работает, потому что эти настройки считываются только при запуске сервера Django.

EDIT: Добавлено больше контекста, добавлен псевдокод

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