mirror of
https://github.com/open-webui/open-webui
synced 2025-05-18 12:21:36 +00:00
Merge remote-tracking branch 'oauth/main' into dev
This commit is contained in:
commit
f999956997
@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Ability to override default redirect urls when using OAuth with environment variables. You may use `OAUTH_REDIRECT_URL`, `MICROSOFT_REDIRECT_URL`, or `GOOGLE_REDIRECT_URL` to set custom redirect URLs.
|
||||||
|
|
||||||
## [0.3.10] - 2024-07-17
|
## [0.3.10] - 2024-07-17
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
@ -349,6 +349,12 @@ GOOGLE_OAUTH_SCOPE = PersistentConfig(
|
|||||||
os.environ.get("GOOGLE_OAUTH_SCOPE", "openid email profile"),
|
os.environ.get("GOOGLE_OAUTH_SCOPE", "openid email profile"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
GOOGLE_REDIRECT_URI = PersistentConfig(
|
||||||
|
"GOOGLE_REDIRECT_URI",
|
||||||
|
"oauth.google.redirect_uri",
|
||||||
|
os.environ.get("GOOGLE_REDIRECT_URI", ""),
|
||||||
|
)
|
||||||
|
|
||||||
MICROSOFT_CLIENT_ID = PersistentConfig(
|
MICROSOFT_CLIENT_ID = PersistentConfig(
|
||||||
"MICROSOFT_CLIENT_ID",
|
"MICROSOFT_CLIENT_ID",
|
||||||
"oauth.microsoft.client_id",
|
"oauth.microsoft.client_id",
|
||||||
@ -373,6 +379,12 @@ MICROSOFT_OAUTH_SCOPE = PersistentConfig(
|
|||||||
os.environ.get("MICROSOFT_OAUTH_SCOPE", "openid email profile"),
|
os.environ.get("MICROSOFT_OAUTH_SCOPE", "openid email profile"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
MICROSOFT_REDIRECT_URI = PersistentConfig(
|
||||||
|
"MICROSOFT_REDIRECT_URI",
|
||||||
|
"oauth.microsoft.redirect_uri",
|
||||||
|
os.environ.get("MICROSOFT_REDIRECT_URI", ""),
|
||||||
|
)
|
||||||
|
|
||||||
OAUTH_CLIENT_ID = PersistentConfig(
|
OAUTH_CLIENT_ID = PersistentConfig(
|
||||||
"OAUTH_CLIENT_ID",
|
"OAUTH_CLIENT_ID",
|
||||||
"oauth.oidc.client_id",
|
"oauth.oidc.client_id",
|
||||||
@ -391,6 +403,12 @@ OPENID_PROVIDER_URL = PersistentConfig(
|
|||||||
os.environ.get("OPENID_PROVIDER_URL", ""),
|
os.environ.get("OPENID_PROVIDER_URL", ""),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
OPENID_REDIRECT_URI = PersistentConfig(
|
||||||
|
"OPENID_REDIRECT_URI",
|
||||||
|
"oauth.oidc.redirect_uri",
|
||||||
|
os.environ.get("OPENID_REDIRECT_URI", ""),
|
||||||
|
)
|
||||||
|
|
||||||
OAUTH_SCOPES = PersistentConfig(
|
OAUTH_SCOPES = PersistentConfig(
|
||||||
"OAUTH_SCOPES",
|
"OAUTH_SCOPES",
|
||||||
"oauth.oidc.scopes",
|
"oauth.oidc.scopes",
|
||||||
@ -424,6 +442,7 @@ def load_oauth_providers():
|
|||||||
"client_secret": GOOGLE_CLIENT_SECRET.value,
|
"client_secret": GOOGLE_CLIENT_SECRET.value,
|
||||||
"server_metadata_url": "https://accounts.google.com/.well-known/openid-configuration",
|
"server_metadata_url": "https://accounts.google.com/.well-known/openid-configuration",
|
||||||
"scope": GOOGLE_OAUTH_SCOPE.value,
|
"scope": GOOGLE_OAUTH_SCOPE.value,
|
||||||
|
"redirect_uri": GOOGLE_REDIRECT_URI.value,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@ -436,6 +455,7 @@ def load_oauth_providers():
|
|||||||
"client_secret": MICROSOFT_CLIENT_SECRET.value,
|
"client_secret": MICROSOFT_CLIENT_SECRET.value,
|
||||||
"server_metadata_url": f"https://login.microsoftonline.com/{MICROSOFT_CLIENT_TENANT_ID.value}/v2.0/.well-known/openid-configuration",
|
"server_metadata_url": f"https://login.microsoftonline.com/{MICROSOFT_CLIENT_TENANT_ID.value}/v2.0/.well-known/openid-configuration",
|
||||||
"scope": MICROSOFT_OAUTH_SCOPE.value,
|
"scope": MICROSOFT_OAUTH_SCOPE.value,
|
||||||
|
"redirect_uri": MICROSOFT_REDIRECT_URI.value,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@ -449,6 +469,7 @@ def load_oauth_providers():
|
|||||||
"server_metadata_url": OPENID_PROVIDER_URL.value,
|
"server_metadata_url": OPENID_PROVIDER_URL.value,
|
||||||
"scope": OAUTH_SCOPES.value,
|
"scope": OAUTH_SCOPES.value,
|
||||||
"name": OAUTH_PROVIDER_NAME.value,
|
"name": OAUTH_PROVIDER_NAME.value,
|
||||||
|
"redirect_uri": OPENID_REDIRECT_URI.value,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2143,6 +2143,7 @@ for provider_name, provider_config in OAUTH_PROVIDERS.items():
|
|||||||
client_kwargs={
|
client_kwargs={
|
||||||
"scope": provider_config["scope"],
|
"scope": provider_config["scope"],
|
||||||
},
|
},
|
||||||
|
redirect_uri=provider_config["redirect_uri"],
|
||||||
)
|
)
|
||||||
|
|
||||||
# SessionMiddleware is used by authlib for oauth
|
# SessionMiddleware is used by authlib for oauth
|
||||||
@ -2160,7 +2161,10 @@ if len(OAUTH_PROVIDERS) > 0:
|
|||||||
async def oauth_login(provider: str, request: Request):
|
async def oauth_login(provider: str, request: Request):
|
||||||
if provider not in OAUTH_PROVIDERS:
|
if provider not in OAUTH_PROVIDERS:
|
||||||
raise HTTPException(404)
|
raise HTTPException(404)
|
||||||
redirect_uri = request.url_for("oauth_callback", provider=provider)
|
# If the provider has a custom redirect URL, use that, otherwise automatically generate one
|
||||||
|
redirect_uri = OAUTH_PROVIDERS[provider].get("redirect_url") or request.url_for(
|
||||||
|
"oauth_callback", provider=provider
|
||||||
|
)
|
||||||
return await oauth.create_client(provider).authorize_redirect(request, redirect_uri)
|
return await oauth.create_client(provider).authorize_redirect(request, redirect_uri)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user