Jednotné přihlášení (Generic OIDC / SAML SSO)

LockMyCal podporuje standardizovaný protokol OpenID Connect (OIDC), což umožňuje bezproblémové napojení na libovolného podnikového poskytovatele identity (IdP), jako jsou:

  • Keycloak (Self-hosted)
  • Authentik (Self-hosted)
  • Authelia (Self-hosted)
  • Okta / Auth0
  • GitLab / JumpCloud / OneLogin

Jak OIDC v LockMyCal funguje

sequenceDiagram
    participant U as Uživatel
    participant L as LockMyCal
    participant I as Váš Identity Provider (Keycloak/Authentik)

    U->>L: Kliknutí na "Firemní přihlášení (SSO)"
    L->>I: Přesměrování na autorizační URL s OIDC scopes (openid profile email)
    U->>I: Zadání firemních údajů + MFA
    I->>L: Zpětné volání s autorizačním kódem (/auth/oauth/callback)
    L->>I: Výměna kódu za ID Token / UserInfo
    I-->>L: Uživatelský profil (email, jméno, unikátní sub)
    L->>U: Přihlášení do LockMyCal dashboardu

1. Zaregistrování klienta ve vašem IdP

Ve vašem identity provideru vytvořte nového klienta (Client / Application) typu OpenID Connect / Confidential:

  • Client ID: lockmycal
  • Client Authentication: Zapnuto (Client Secret)
  • Valid Redirect URI:
    https://rezervace.vasedomena.cz/auth/oauth/callback
  • Scopes: openid, profile, email

2. Konfigurace proměnných v LockMyCal

Nastavte ve vašem .env souboru:

# Povolení obecného OAuth/OIDC modulu
ENABLE_OAUTH_AUTH=true

# Klíče klienta
OAUTH_CLIENT_ID=lockmycal
OAUTH_CLIENT_SECRET=vas_vygenerovany_tajny_klic

# Endpointy vašeho poskytovatele (musí být HTTPS; najdete je v .well-known/openid-configuration
# dokumentu vašeho IdP — LockMyCal jej ale sám nenačítá, endpointy je nutné zadat ručně)
OAUTH_AUTHORIZE_URL=https://sso.vasedomena.cz/realms/master/protocol/openid-connect/auth
OAUTH_TOKEN_URL=https://sso.vasedomena.cz/realms/master/protocol/openid-connect/token
OAUTH_USERINFO_URL=https://sso.vasedomena.cz/realms/master/protocol/openid-connect/userinfo

# Volitelné: rozsah oprávnění (výchozí "openid email profile")
OAUTH_SCOPE="openid email profile"

# Volitelné: základní URL, jen pokud jsou endpointy výše zadané relativně (např. /token)
# OAUTH_PROVIDER_URL=https://sso.vasedomena.cz

# Volitelné: jak důvěřovat claimu email_verified (trust_absent / require / ignore)
# Někteří poskytovatelé (Authentik, Entra ID, část Keycloak nastavení) ho neposílají.
# OAUTH_EMAIL_VERIFIED_CLAIM=trust_absent

# Volitelné: přijmout "id"/"user_id" místo "sub" (jen pro ne-OIDC poskytovatele)
# OAUTH_ALLOW_ID_FALLBACK=false

Tip

S PASSWORD_AUTH_ENABLED=false zůstane SSO jediným způsobem přihlášení – před vypnutím hesel ověřte, že přihlášení přes SSO funguje.

Note

LockMyCal nemá automatické OIDC discovery — adresu autorizačního, token a userinfo endpointu je vždy nutné zadat ručně, i když je poskytovatel nabízí přes standardní .well-known/openid-configuration dokument.


3. Cloudron

Pokud LockMyCal běží na Cloudronu s propojeným uživatelským adresářem, jednotné přihlášení se nastaví samo: aplikace převezme přihlašovací údaje a endpointy z proměnných CLOUDRON_OIDC_*, pokud nejsou zadané OAUTH_*. Tlačítko pro přihlášení se jmenuje podle názvu poskytovatele identity, který jste zadali v Cloudronu; mimo Cloudron se jmenuje „SSO“.