Skip to content

Per-tenant OAuth 2.0 Settings | Django Multi-Tenant OAuth2 Credentials #252

@duplxey

Description

@duplxey

I have a multi-tenant Django app created using the django-tenants package. I successfully setup "global" social authentication using social_core.backends.google.GoogleOAuth2 backend.

Now, I'd like to allow tenants to provide their own Google OAuth2 credentials (client_id & client_secret) and authenticate through their own Google apps. Is there any way I can inject tenants' OAuth2 credentials in ConvertTokenView() based on what schema the request is made from?

Pseudocode:

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

Alternatively, I was thinking about dynamically modifying the following two settings.py settings:

# 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>"

However, this method does not work, because these two settings are only read once on Django server startup.

I posted a similar question on StackOverflow.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions