Treceți la conținutul principal

Autentificare unică pentru o instalare on-premise

Această pagină este pentru operatorii unei instalări MonoChat on-premise. Explică cum vă permiteți echipei să se conecteze cu furnizorul de identitate (IdP) al companiei prin OpenID Connect (OIDC), de exemplu Microsoft Entra ID, Okta, Keycloak, AD FS sau Google Workspace.

Autentificarea unică se configurează pentru întreaga instalare în setările serverului, nu pentru fiecare organizație. Un cont MonoChat poate aparține mai multor organizații, iar oamenii se conectează înainte să aleagă una. Conectarea oferă un cont, nu acces: o persoană vede o organizație doar după ce aceasta o invită și îi atribuie un rol.

Cum funcționează conectarea​

Când cineva face clic pe butonul SSO de pe pagina de conectare, MonoChat deschide pagina de conectare a IdP-ului într-o fereastră pop-up. După ce persoana se conectează acolo, IdP-ul trimite browserul înapoi la MonoChat cu un cod de unică folosință. Serverul MonoChat schimbă codul pe un token de ID și îl verifică înainte de a conecta persoana:

  • Endpointurile și cheile de semnare ale IdP-ului sunt citite la fiecare conectare din documentul de descoperire, <issuer>/.well-known/openid-configuration.
  • Conectarea folosește fluxul authorization code cu PKCE (S256), un state și un nonce. O cerere de conectare este valabilă 10 minute și poate fi folosită o singură dată.
  • Tokenul de ID trebuie să fie semnat cu una dintre cheile IdP-ului și să conțină emitentul dvs. (iss), ID-ul de client (aud), nonce-ul cererii și o expirare (exp) care nu a trecut.
  • Tokenul de ID trebuie să conțină adresa de e-mail a persoanei (email). Conectarea este refuzată când IdP-ul indică faptul că adresa nu este verificată (email_verified: false).

1. Înregistrați MonoChat la furnizorul de identitate​

Creați în IdP o aplicație (un client) pentru MonoChat cu aceste valori:

Setare în IdPValoare
Tipul aplicațieiAplicație web cu client secret (client confidențial)
URI de redirecționare pentru conectarehttps://<your MonoChat domain>/api/oauth/oidc/redirect
Tip de grantAuthorization code
Scopesopenid email profile
Autentificarea clientului la endpointul de tokenClient secret trimis prin autentificare HTTP Basic (client_secret_basic)

Asigurați-vă că tokenul de ID conține claim-ul email. Notați ID-ul de client, client secret-ul și emitentul. Emitentul este valoarea issuer din documentul de descoperire al IdP-ului. Forme uzuale:

Furnizor de identitateEmitent (issuer)
Microsoft Entra IDhttps://login.microsoftonline.com/<tenant id>/v2.0
Oktahttps://<your Okta domain>/oauth2/default sau https://<your Okta domain>
Keycloakhttps://<your Keycloak host>/realms/<realm>
AD FS (2016 sau mai nou)https://<your AD FS host>/adfs
Google Workspacehttps://accounts.google.com

Deschideți <issuer>/.well-known/openid-configuration într-un browser și copiați valoarea issuer exact, inclusiv un / final dacă există. MonoChat nu conectează pe nimeni când cele două diferă.

2. Adăugați setările​

Adăugați blocurile oidc în setările serverului și reporniți MonoChat. Blocul public merge sub public.oauth, iar blocul secret sub oauth:

{
"oauth": {
"oidc": {
"clientSecret": "<client secret>",
"autoCreateAccounts": true,
"allowedEmailDomains": ["company.com"]
}
},
"public": {
"oauth": {
"oidc": {
"issuer": "https://login.microsoftonline.com/<tenant id>/v2.0",
"clientId": "<client id>",
"redirectPath": "/api/oauth/oidc/redirect",
"scope": "openid email profile",
"buttonLabel": "Sign in with Company SSO"
}
}
}
}
SetareCe face
public.oauth.oidc.issuerEmitentul de la pasul 1
public.oauth.oidc.clientIdID-ul de client de la pasul 1
public.oauth.oidc.redirectPathCalea URI-ului de redirecționare de la pasul 1
public.oauth.oidc.scopeScope-urile pe care le cere MonoChat
public.oauth.oidc.buttonLabelTextul butonului de conectare. Gol afișează „Conectați-vă cu SSO” în limba persoanei
oauth.oidc.clientSecretClient secret-ul. Rămâne pe server
oauth.oidc.autoCreateAccountstrue creează contul MonoChat la prima conectare SSO a unei persoane, chiar și când înregistrarea se face doar pe bază de invitație (public.disableSignup)
oauth.oidc.allowedEmailDomainsDoar persoanele cu adresa de e-mail într-unul dintre aceste domenii se pot conecta prin SSO. Omiteți-o pentru a permite orice domeniu

Butonul SSO apare apoi pe pagina de conectare.

Cine se poate conecta​

  • Persoane noi. Cu autoCreateAccounts: true, prima conectare SSO a unei persoane îi creează contul. Fără această setare, contul este creat doar dacă public.disableSignup este dezactivat sau persoana se conectează dintr-o invitație.
  • Persoane care au deja un cont cu aceeași adresă de e-mail. Cu oauth.autoMerge: true, prima conectare SSO leagă SSO de contul existent, dar numai când tokenul de ID indică faptul că adresa este verificată (email_verified: true). În rest, și întotdeauna fără autoMerge, MonoChat îi cere persoanei să se conecteze o dată cu parola și leagă apoi SSO de cont; acceptarea unei invitații la o organizație face și ea legătura. Microsoft Entra ID și AD FS nu trimit email_verified, așa că, în cazul lor, lăsați conectarea cu parolă permisă până când toată lumea a legat SSO, sau invitați din nou persoanele.
  • Domenii permise. Cu allowedEmailDomains, o adresă din orice alt domeniu este refuzată. Pentru Google Workspace (emitent https://accounts.google.com), MonoChat verifică claim-ul hd, domeniul Workspace al contului, în locul adresei de e-mail, deoarece un cont Google personal poate folosi o adresă din orice domeniu.

Faceți din SSO singura metodă de conectare​

  1. Setați public.auth.methods la ["oidc"]. Pagina de conectare afișează atunci doar butonul SSO, iar serverul refuză conectarea cu parolă și prin rețele sociale.
  2. Utilizatorii root super (utilizatori cu rolul root super în organizația rădăcină) se pot conecta în continuare cu parola la /auth/signin?fallback=1, astfel încât instalarea să nu fie niciodată blocată dacă IdP-ul nu funcționează.
  3. Pentru a împiedica noile conturi SSO să își deschidă propriile organizații, setați public.disableTenantCreation la true. Atunci doar persoanele cu rolul potrivit într-o organizație pot crea organizații sub ea.

Rețea​

  • Păstrați /api/oauth/oidc/authorize și redirectPath-ul accesibile pentru persoanele care se conectează. Ambele se deschid în browserul lor.
  • Serverul MonoChat trebuie să ajungă prin HTTPS la documentul de descoperire, la endpointul de token și la setul de chei (jwks_uri) ale IdP-ului.

Limitări​

  • Aplicația mobilă MonoChat nu oferă încă SSO. Dacă faceți din SSO singura metodă de conectare, agenții nu se pot conecta în aplicația mobilă.
  • Deconectarea din MonoChat nu deconectează persoana din IdP, iar deconectarea din IdP nu o deconectează încă din MonoChat.

Verificați configurarea​

  1. Deschideți pagina de conectare și faceți clic pe butonul SSO. Conectați-vă în IdP; fereastra pop-up se închide și sunteți conectat la MonoChat.
  2. Conectați-vă cu o persoană care nu are încă un cont MonoChat și confirmați că se creează contul (sau că este refuzat, dacă nu ați activat autoCreateAccounts).
  3. Dacă ați setat allowedEmailDomains, încercați cu o persoană dintr-un alt domeniu și confirmați că conectarea este refuzată.
  4. Dacă ați setat public.auth.methods, confirmați că o conectare cu parolă este refuzată și că un utilizator root super se poate conecta în continuare la /auth/signin?fallback=1.