Zum Hauptinhalt springen
connic
Starte kostenlos
Apps

Anmeldung

Lege fest, wer eine App öffnen darf: alle, Mitglieder deines connic-Projekts oder Personen aus deinem eigenen Identity Provider. Das geht im Code oder im Dashboard.

Zuletzt aktualisiert

Modi

ModusWer die App öffnen darf
publicAlle mit dem Link. Es gibt keine Anmeldung.
connicMitglieder des Projekts mit ihrem connic-Konto. Optional nur bestimmte Berechtigungsgruppen.
oidcPersonen, die dein OpenID-Connect-Provider anmeldet, etwa Entra ID, Okta oder Google Workspace. Optional nur bestimmte E-Mail-Domains oder Gruppen.

Bei Apps mit Anmeldung prüft connic die Session, bevor es eine Datei ausliefert oder eine Connector- oder Datenanfrage weiterleitet. Eine neue App ohne Anmeldeeinstellungen im Code oder im Dashboard nutzt connic-Konten und lässt jedes Projektmitglied hinein.

Code oder Dashboard

Lege die Anmeldung im Block auth von apps/<key>.yaml fest, oder lass auth weg und stelle sie im Dashboard auf dem Tab Settings der App unter Sign-in ein. Deklariert die Datei auth, hat die Datei Vorrang: Das Dashboard zeigt die Einstellungen mit dem Badge In code und lässt sie nicht ändern. Für update_app in connic MCP gilt dieselbe Regel.

Hört ein Deployment auf, auth zu deklarieren, behält die App ihre letzten Anmeldeeinstellungen samt OIDC Client Secret, und ab dann verwaltet das Dashboard sie. Ein Deployment ändert nur dann, wer eine App öffnen darf, wenn die Datei es so festlegt.

Jede Änderung an den geltenden Anmeldeeinstellungen, ob im Code oder im Dashboard, meldet alle Besucher von der App ab.

connic-Konten

apps/portal.yaml
auth:
  mode: connic
  groups: [Support, Admin]     # optional; ohne groups jedes Projektmitglied

Besucher melden sich mit ihrem connic-Konto an und müssen Mitglied des Projekts sein. Mit groups brauchen sie zusätzlich eine dieser Berechtigungsgruppen; der Owner des Projekts kann die App immer öffnen. Jede Gruppe muss im Projekt existieren, sonst scheitert das Deployment. In Zugriffsregeln und im Run-Kontext ist user.id die connic-Nutzer-ID des Besuchers, und user.groups listet seine Berechtigungsgruppen im Projekt auf.

connic-Konten eignen sich für interne Tools und Staging-Environments. Für Mitarbeitende deiner Kunden oder Partner nimmst du deren Identity Provider.

Dein Identity Provider

Mit oidc melden sich Besucher bei einem beliebigen OpenID-Connect-Provider an. connic nutzt den Authorization Code Flow mit PKCE und schickt das Client Secret per HTTP Basic Authentication (client_secret_basic).

apps/portal.yaml
auth:
  mode: oidc
  issuer: https://login.microsoftonline.com/${ENTRA_TENANT_ID}/v2.0
  client_id: ${PORTAL_CLIENT_ID}
  client_secret: ${PORTAL_CLIENT_SECRET}
  allowed_domains: [example.com]
  allowed_groups: [support]
  groups_claim: groups
FeldTypStatusBeschreibung
modestringErforderlichpublic, connic oder oidc. Dashboard: Who can open the app.
groupsstring[]OptionalNur connic. Berechtigungsgruppen, die die App öffnen dürfen. Leer lässt jedes Projektmitglied hinein. Dashboard: Permission groups.
issuerstringOptionaloidc, erforderlich. Die Issuer-URL des Providers, beginnend mit https://. connic liest <issuer>/.well-known/openid-configuration, und der dort genannte Issuer muss passen. Dashboard: Issuer.
client_idstringOptionaloidc, erforderlich. Dashboard: Client ID.
client_secretstringOptionaloidc, erforderlich. In einer Datei eine Referenz ${NAME} auf eine Variable. Im Dashboard nur schreibbar: Lass das Feld leer, um das gespeicherte Secret zu behalten. Änderst du issuer oder client_id, braucht es das Secret erneut. Dashboard: Client secret.
allowed_domainsstring[]Optionaloidc. E-Mail-Domains, die sich anmelden dürfen, etwa example.com. Leer erlaubt jede E-Mail-Adresse. Die Adresse stammt aus dem Claim email oder aus preferred_username, wenn das eine E-Mail-Adresse ist. Ein Besucher, dessen E-Mail-Adresse der Provider als nicht bestätigt markiert, hat keine E-Mail-Adresse und kommt nicht durch. Dashboard: Allowed email domains.
allowed_groupsstring[]Optionaloidc. Der Besucher braucht mindestens eine dieser Gruppen in groups_claim. Leer erlaubt jede Gruppe. Dashboard: Allowed groups.
groups_claimstringOptionaloidc. Der Claim im ID-Token, der die Gruppen des Besuchers auflistet; er wird zu user.groups. Dashboard: Groups claim.Standard: groups
scopesstring[]Optionaloidc. Zusätzliche Scopes. connic fragt immer openid, profile und email an und offline_access, wenn der Provider es unterstützt. Dashboard: Extra scopes.

Felder eines anderen Modus werden abgelehnt, eine connic-App kann also kein issuer setzen.

Provider einrichten

  1. Registriere beim Provider eine Webanwendung mit Client Secret.

  2. Speichere Client ID und Secret als Variablen jedes Environments, referenziere sie in auth und starte ein Deployment. Oder wähle auf dem Tab Settings der App Your identity provider, fülle die Felder aus und klicke auf Save changes.

  3. Kopiere die Redirect URI vom Tab Settings der App und registriere sie beim Provider. Sie ist für alle Apps gleich.

connic prüft Signatur, Audience, Issuer und Nonce des ID-Tokens. Steht im Token email_verified: false, ignoriert connic die E-Mail-Adresse: user.email ist null, und ein nicht leeres allowed_domains weist den Besucher ab.

Claims in Regeln

user.claims enthält die Claims des ID-Tokens über den Besucher, etwa eine Abteilung oder einen Mandanten, für Zugriffsregeln. connic lässt die Verwaltungsfelder des Tokens wie iss, aud, exp und nonce weg und behält bis zu 8 KB Claims, die kleinsten zuerst. Claims stehen weder in /_connic/me noch in context["end_user"].

Sessions

Nach der Anmeldung hält der Browser ein Session-Cookie für den Host der App. connic erneuert es alle 10 Minuten und prüft dabei jedes Mal den Zugriff: bei connic-Konten Projektmitgliedschaft und Berechtigungsgruppen, bei Identity Providern die erlaubten E-Mail-Domains und Gruppen. Stellt der Provider Refresh Tokens aus, fragt connic ihn bei jeder Erneuerung, und wer dort entfernt wird, verliert den Zugang innerhalb von Minuten. Ohne Refresh Tokens wirkt das erst, wenn die Session endet.

Eine Session endet nach 12 Stunden, beim Abmelden oder wenn sich die Anmeldeeinstellungen der App ändern. Die Standard-URL und eine Custom Domain haben jeweils eigene Sessions.

Ohne gültige Session leiten Seitenaufrufe auf /_connic/login um und kehren nach der Anmeldung zum selben Pfad zurück. Alle anderen Anfragen, auch Connector-Aufrufe und die Data API, bekommen 401 mit {"error": "Sign-in required"}. Bekommt die App ein 401, schick den Besucher zu /_connic/login?return=<path>. Der Rückkehrpfad muss auf dem eigenen Host der App bleiben; alles andere, auch Pfade mit Steuerzeichen oder Backslashes, führt zurück zu /.

session.js
if (response.status === 401) {
  location.assign(`/_connic/login?return=${encodeURIComponent(location.pathname + location.search)}`);
}

Abmelden

Verlinke auf /_connic/logout. Der Pfad beendet die Session und zeigt eine Seite mit einem Link zur erneuten Anmeldung. Beim Identity Provider bleibt der Besucher angemeldet.

Öffentliche Apps

Öffentliche Apps haben keine Anmeldung, und /_connic/login leitet auf / um. Mit der ersten Anfrage der App an die Data API oder einen Connector legt connic ein zufälliges Secret in einem Cookie ab, das ein Jahr hält, und leitet daraus für jede App eine eigene Besucher-ID ab. Diese ID wird zu user.id in Zugriffsregeln und zu end_user.id in Runs. Wer die ID eines Besuchers kennt, kann nicht in dessen Namen handeln. Löscht jemand die Cookies, bekommt der Browser eine neue ID; sie steht also für einen Browser, nicht für eine Person. Solange das Cookie fehlt, bekommt jede Anfrage eine neue ID. Lass beim ersten Laden deshalb eine Anfrage wie GET /_connic/me abschließen, bevor die App weitere parallel schickt. Regeln für öffentliche Apps beschreibt Öffentliche Besucher.

Cookies

connic setzt diese Cookies auf dem Host der App. Jedes gilt nur für diesen Host und ist Secure, HttpOnly und SameSite=Lax.

CookieZweckLaufzeitWann es gesetzt wird
__Host-connic_app_sessionHält die Session eines angemeldeten Besuchers.12 StundenApps mit Anmeldung: bei der Anmeldung und erneut, wenn connic die Session erneuert. Abmelden löscht es.
__Host-connic_app_loginVerknüpft die Rückkehr von der Anmeldung mit dem Browser, der sie begonnen hat.10 MinutenApps mit Anmeldung: wenn die Anmeldung beginnt. Nach erfolgreicher Anmeldung gelöscht.
__Host-connic_app_visitorEnthält das zufällige Secret, aus dem connic die ID eines öffentlichen Besuchers ableitet.1 JahrÖffentliche Apps: mit der ersten Anfrage der App an die Data API oder einen Connector. Seiten und Dateien setzen es nie.

Wenn die Anmeldung scheitert

Eine gescheiterte Anmeldung zeigt eine Seite Sign-in didn't work mit einer dieser Meldungen und zählt in den Statistiken der App als fehlgeschlagene Anmeldung.

MeldungUrsache
Your account doesn't have access to <app>.Der Besucher darf nicht hinein: kein Projektmitglied oder in keiner der Berechtigungsgruppen, oder eine E-Mail-Domain oder Gruppe, die die App nicht zulässt, auch bei einer E-Mail-Adresse, die der Provider als nicht bestätigt markiert.
The app's sign-in provider can't be reached. Try again later.connic konnte das Discovery-Dokument des Issuers nicht laden oder seinen Token-Endpunkt nicht erreichen.
The app's sign-in provider is misconfigured.Das Discovery-Dokument nennt einen anderen Issuer als issuer.
Sign-in was rejected by the provider. Try again.Der Provider hat die Token-Anfrage abgelehnt, zum Beispiel weil das Client Secret falsch ist.
The sign-in response couldn't be verified. Try again.Signatur, Audience, Issuer oder Nonce des ID-Tokens passten nicht.
Sign-in was cancelled. Open the app again to sign in.Der Besucher hat beim Provider abgebrochen, oder der Provider hat einen Fehler zurückgegeben.
This sign-in link expired. Open the app again to sign in.Die Anmeldung hat länger als 10 Minuten gedauert, oder der Link wurde bereits benutzt.