Nu pot să mă conectez cu SSO
VaultPAM suportă Single Sign-On (SSO) prin OpenID Connect (OIDC). Când conectarea SSO eșuează, cauza rădăcinii este aproape întotdeauna una dintre cinci categorii: configurare incorectă OIDC, clock skew între VaultPAM și IdP, utilizator neprovinizionat în Identity Provider, URI de redirecționare incorect, sau o setare de realm Keycloak. Administratorii ar trebui să parcurgă acestea în ordine — configurarea incorectă OIDC este de departe cea mai comună cauză.
Simptome
- Butonul SSO de pe pagina de conectare redirecționează către Identity Provider, dar apoi returnează o eroare.
- Mesaje de eroare pe care le-ați putea vedea:
invalid_clientsauunauthorized_clientredirect_uri_mismatchaccess_deniedinvalid_grant: Session not activeUser not foundsauAccount is not fully set up- O pagină generică "Something went wrong" după o redirecționare din IdP
- Utilizatorul se poate autentifica pe partea IdP, dar VaultPAM nu îl conectează.
Cauze
1. Configurare incorectă OIDC
Client ID-ul, Client Secret-ul sau URL-ul de descoperire OIDC configurat în VaultPAM nu se potrivește cu ceea ce Identity Provider-ul a înregistrat.
Verificare: În Organization → Security → SSO Settings, verificați:
- OIDC Issuer URL se rezolvă și returnează un document
.well-known/openid-configurationvalabil. - Client ID se potrivește exact cu ceea ce este înregistrat în aplicația IdP.
- Client Secret nu a fost rotit pe partea IdP fără a actualiza VaultPAM.
Remediere: Actualizați câmpul incorect și salvați. Testați prin încercarea conectării SSO din nou.
2. Clock skew între VaultPAM și IdP
Tokenurile OIDC conțin revendicări iat (issued-at) și exp (expiry). Dacă ceasurile pe serverul VaultPAM sau IdP sunt mai departe de ±60 de secunde, validarea tokenului eșuează cu o eroare invalid_grant sau "Session not active".
Verificare: Pe gazda VaultPAM (sau nod Kubernetes), rulați:
date -u
Comparați cu ceasul IdP (vizibil în revendicarea iat a unui JWT decodat, sau verificat prin consola admin IdP). Diferența trebuie să fie mai mică de 60 de secunde.
Remediere: Asigurați-vă că ambele sisteme sincronizează ceasurile lor cu o sursă NTP. Pe Linux: timedatectl set-ntp true. În Kubernetes, ceasul nodului este moștenit de pe gazda VM — asigurați-vă că stratul hypervisor are NTP configurat.
3. Utilizator neprovinizionat în IdP
Contul utilizatorului există în VaultPAM, dar nu a fost creat sau activat în Identity Provider, sau email-ul contului IdP nu se potrivește cu email-ul contului VaultPAM.
Verificare: În consola admin IdP, confirmați că contul utilizatorului există și este activ. Verificați că adresa de email se potrivește exact (potrivirea sensibilă la majuscule se aplică în unele IdP-uri).
Remediere: Creați sau activați contul utilizatorului în IdP, sau actualizați adresa de email în oricare dintre sisteme pentru a vă asigura că se potrivesc. Dacă organizația dumneavoastră utilizează aprovizionarea SCIM, confirmați că conectorul de aprovizionare este activ și utilizatorul aparține grupului aprovizionat.
4. URI de redirecționare incorect
URI-ul de redirecționare pe care VaultPAM îl trimite în cursul fluxului OIDC Authorization Code trebuie să se potrivească exact cu unul dintre URI-urile de redirecționare permise înregistrate în aplicația IdP. Chiar și o diferență de slash finală provoacă o eroare redirect_uri_mismatch.
Verificare: În Organization → Security → SSO Settings, notați Callback URL afișat. Deschideți înregistrarea aplicației IdP și verificați dacă acest URI exact se află în lista URI-urilor de redirecționare permise.
Remediere: Adăugați URL-ul exact de callback la lista URI-urilor de redirecționare permise din aplicația IdP și salvați.
5. Setări de realm Keycloak
Când VaultPAM utilizează o instanță încorporată sau auto-găzduită Keycloak, setările de realm configurate incorect pot preveni conectarea chiar și atunci când clientul OIDC este configurat corect.
Probleme comune specifice Keycloak:
- Realm-ul este dezactivat sau în modul doar citire.
- Access Type al clientului este setat la
publicatunci când VaultPAM se așteaptă laconfidential. - Scopurile obligatorii
openid,emailsauprofilenu sunt mapate în client. - Valid Redirect URIs din clientul Keycloak nu include URL-ul callback VaultPAM.
Verificare: Deschideți consola admin Keycloak, navigați la Realms → [realm name] → Clients → [VaultPAM client], și verificați:
- Clientul este Enabled.
- Access Type este
confidential. - Valid Redirect URIs include URL-ul callback VaultPAM.
- Client Scopes include
openid,emailșiprofile.
Remediere: Corectați setările clientului Keycloak și salvați. Nu este necesară o repornire pentru majoritatea modificărilor de configurare Keycloak.
Pași de rezolvare
- Deschideți Organization → Security → SSO Settings și verificați că OIDC Issuer URL, Client ID și Client Secret se potrivesc exact cu înregistrarea aplicației IdP.
- Verificați ceasurile serverului pe gazda VaultPAM și IdP. Dacă clock skew depășește 30 de secunde, configurați NTP pe ambele sisteme.
- În consola admin IdP, confirmați că contul utilizatorului există, este activ și email-ul se potrivește cu email-ul contului VaultPAM.
- Confirmați că Callback URL afișat în Organization → Security → SSO Settings este listat ca URI de redirecționare permis în aplicația IdP.
- Dacă utilizați Keycloak, deschideți consola admin Keycloak și verificați că clientul este activat, tipul de acces este
confidential, URI-urile de redirecționare valabile includ URL-ul callback și scopurile obligatorii sunt mapate. - După orice modificare, ștergeți cookie-urile browserului și încercați din nou conectarea SSO dintr-o fereastră privată/incognito pentru a evita starea sesiunii în cache.
Cale de escaladare
Dacă ați parcurs toate cinci cauze și conectarea SSO încă eșuează:
- Capturați URL-ul complet afișat în bara de adresă a browserului la punctul de eșec (conține codul de eroare și descrierea ca parametri de interogare).
- Colectați jurnalul de evenimente Keycloak sau IdP pentru tentativa de autentificare eșuată.
- Notați mesajul de eroare exact vizibil pe ecran.
- Deschideți un bilet de asistență cu: tipul și versiunea IdP, URL-ul erorii, fragmentul jurnalului de evenimente și confirmarea pasilor pe care i-ați completat deja.