Add provider id field, relaxing name
This commit is contained in:
parent
57041e9233
commit
170e663ee8
4 changed files with 10 additions and 9 deletions
|
@ -15,7 +15,7 @@ from .settings import settings
|
|||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
OIDC_PROVIDERS = set([provider.name for provider in settings.oidc.providers])
|
||||
OIDC_PROVIDERS = set([provider.id for provider in settings.oidc.providers])
|
||||
|
||||
|
||||
def get_provider(request: Request) -> StarletteOAuth2App:
|
||||
|
|
|
@ -51,7 +51,7 @@ _providers = {}
|
|||
|
||||
for provider in settings.oidc.providers:
|
||||
authlib_oauth.register(
|
||||
name=provider.name,
|
||||
name=provider.id,
|
||||
server_metadata_url=provider.openid_configuration,
|
||||
client_kwargs={
|
||||
"scope": "openid email offline_access profile roles",
|
||||
|
@ -62,10 +62,10 @@ for provider in settings.oidc.providers:
|
|||
# update_token=update_token,
|
||||
# client_id="some-client-id", # if enabled, authlib will also check that the access token belongs to this client id (audience)
|
||||
)
|
||||
fastapi_providers[provider.name] = OpenIdConnect(
|
||||
fastapi_providers[provider.id] = OpenIdConnect(
|
||||
openIdConnectUrl=provider.openid_configuration
|
||||
)
|
||||
_providers[provider.name] = provider
|
||||
_providers[provider.id] = provider
|
||||
|
||||
|
||||
# Endpoints for the login / authorization process
|
||||
|
@ -73,7 +73,7 @@ for provider in settings.oidc.providers:
|
|||
|
||||
@app.get("/login/{oidc_provider_id}")
|
||||
async def login(request: Request, oidc_provider_id: str) -> RedirectResponse:
|
||||
"""Login with the provider name,
|
||||
"""Login with the provider id,
|
||||
by giving the browser a redirect to its authorize page.
|
||||
After successful authentification, the provider replies with an encrypted
|
||||
auth token that only we can decode and contains userinfo,
|
||||
|
|
|
@ -11,9 +11,10 @@ from pydantic_settings import (
|
|||
|
||||
|
||||
class OIDCProvider(BaseModel):
|
||||
name: str = ""
|
||||
url: str = ""
|
||||
client_id: str = ""
|
||||
id: str
|
||||
name: str
|
||||
url: str
|
||||
client_id: str
|
||||
client_secret: str = ""
|
||||
|
||||
@computed_field
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<p>Log in with one of these authentication providers:</p>
|
||||
<div class="login-toolbox">
|
||||
{% for provider in settings.oidc.providers %}
|
||||
<a href="login/{{ provider.name }}">{{ provider.name }}</a>
|
||||
<a href="login/{{ provider.id }}">{{ provider.name }}</a>
|
||||
{% else %}
|
||||
<span class="error">There is no authentication provider defined.
|
||||
Hint: check the settings.yaml file.</span>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue