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 unnonce. 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 IdP | Valoare |
|---|---|
| Tipul aplicației | Aplicație web cu client secret (client confidențial) |
| URI de redirecționare pentru conectare | https://<your MonoChat domain>/api/oauth/oidc/redirect |
| Tip de grant | Authorization code |
| Scopes | openid email profile |
| Autentificarea clientului la endpointul de token | Client 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 identitate | Emitent (issuer) |
|---|---|
| Microsoft Entra ID | https://login.microsoftonline.com/<tenant id>/v2.0 |
| Okta | https://<your Okta domain>/oauth2/default sau https://<your Okta domain> |
| Keycloak | https://<your Keycloak host>/realms/<realm> |
| AD FS (2016 sau mai nou) | https://<your AD FS host>/adfs |
| Google Workspace | https://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"
}
}
}
}
| Setare | Ce face |
|---|---|
public.oauth.oidc.issuer | Emitentul de la pasul 1 |
public.oauth.oidc.clientId | ID-ul de client de la pasul 1 |
public.oauth.oidc.redirectPath | Calea URI-ului de redirecționare de la pasul 1 |
public.oauth.oidc.scope | Scope-urile pe care le cere MonoChat |
public.oauth.oidc.buttonLabel | Textul butonului de conectare. Gol afișează „Conectați-vă cu SSO” în limba persoanei |
oauth.oidc.clientSecret | Client secret-ul. Rămâne pe server |
oauth.oidc.autoCreateAccounts | true 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.allowedEmailDomains | Doar 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.disableSignupeste 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 trimitemail_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 (emitenthttps://accounts.google.com), MonoChat verifică claim-ulhd, 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
- Setați
public.auth.methodsla["oidc"]. Pagina de conectare afișează atunci doar butonul SSO, iar serverul refuză conectarea cu parolă și prin rețele sociale. - 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ă. - Pentru a împiedica noile conturi SSO să își deschidă propriile organizații, setați
public.disableTenantCreationlatrue. 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șiredirectPath-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
- 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.
- 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). - Dacă ați setat
allowedEmailDomains, încercați cu o persoană dintr-un alt domeniu și confirmați că conectarea este refuzată. - 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.