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: Добавлено больше контекста, добавлен псевдокод