Nie mogę zalogować się przez SSO
VaultPAM obsługuje logowanie jednokrotne (SSO) za pośrednictwem OpenID Connect (OIDC). Gdy logowanie SSO kończy się niepowodzeniem, przyczyną źródłową jest niemal zawsze jedna z pięciu kategorii: błędna konfiguracja OIDC, rozbieżność zegarów między VaultPAM a IdP, brak prowizjonowania użytkownika w dostawcy tożsamości (Identity Provider), nieprawidłowy redirect URI lub ustawienie realmu Keycloak. Administratorzy powinni przeanalizować je w tej kolejności — błędna konfiguracja OIDC jest zdecydowanie najczęstszą przyczyną.
Objawy
- Przycisk SSO na stronie logowania przekierowuje do dostawcy tożsamości, ale następnie zwraca błąd.
- Komunikaty o błędach, które możesz zobaczyć:
invalid_clientlubunauthorized_clientredirect_uri_mismatchaccess_deniedinvalid_grant: Session not activeUser not foundlubAccount is not fully set up- Ogólna strona „Something went wrong” po przekierowaniu powrotnym z IdP
- Użytkownik może uwierzytelnić się po stronie IdP, ale VaultPAM nie loguje go.
Przyczyny
1. Błędna konfiguracja OIDC
Client ID, Client Secret lub adres URL wykrywania OIDC skonfigurowane w VaultPAM nie odpowiadają temu, co zostało zarejestrowane w dostawcy tożsamości.
Sprawdź: W Organization → Security → SSO Settings zweryfikuj:
- OIDC Issuer URL rozwiązuje się i zwraca prawidłowy dokument
.well-known/openid-configuration. - Client ID dokładnie odpowiada temu zarejestrowanemu w aplikacji IdP.
- Client Secret nie został zrotowany po stronie IdP bez aktualizacji w VaultPAM.
Napraw: Zaktualizuj niezgodne pole i zapisz. Przetestuj, próbując ponownie zalogować się przez SSO.
2. Rozbieżność zegarów między VaultPAM a IdP
Tokeny OIDC zawierają oświadczenia iat (issued-at) i exp (expiry). Jeśli zegary serwera VaultPAM lub IdP różnią się o więcej niż ±60 sekund, walidacja tokenu kończy się niepowodzeniem z błędem invalid_grant lub „Session not active”.
Sprawdź: Na hoście VaultPAM (lub węźle Kubernetes) uruchom:
date -u
Porównaj z zegarem IdP (widocznym w oświadczeniu iat zdekodowanego JWT lub sprawdzonym za pośrednictwem konsoli administracyjnej IdP). Różnica musi być mniejsza niż 60 sekund.
Napraw: Upewnij się, że oba systemy synchronizują zegary ze źródłem NTP. W systemie Linux: timedatectl set-ntp true. W Kubernetes zegar węzła jest dziedziczony z hosta maszyny wirtualnej — upewnij się, że warstwa hipernadzorcy ma skonfigurowany NTP.
3. Użytkownik nieprowizjonowany w IdP
Konto użytkownika istnieje w VaultPAM, ale nie zostało utworzone ani aktywowane w dostawcy tożsamości, lub adres e-mail konta IdP nie odpowiada adresowi e-mail konta VaultPAM.
Sprawdź: W konsoli administracyjnej IdP potwierdź, że konto użytkownika istnieje i jest aktywne. Zweryfikuj, że adres e-mail jest dokładnie zgodny (w niektórych IdP obowiązuje porównanie z rozróżnianiem wielkości liter).
Napraw: Utwórz lub aktywuj konto użytkownika w IdP albo zaktualizuj adres e-mail w jednym z systemów, aby zapewnić ich zgodność. Jeśli Twoja organizacja korzysta z prowizjonowania SCIM, potwierdź, że konektor prowizjonowania jest aktywny, a użytkownik należy do prowizjonowanej grupy.
4. Nieprawidłowy redirect URI
Redirect URI, który VaultPAM wysyła podczas przepływu OIDC Authorization Code, musi dokładnie odpowiadać jednemu z dozwolonych adresów redirect URI zarejestrowanych w aplikacji IdP. Nawet różnica w postaci końcowego ukośnika powoduje błąd redirect_uri_mismatch.
Sprawdź: W Organization → Security → SSO Settings zanotuj wyświetlany Callback URL. Otwórz rejestrację aplikacji IdP i zweryfikuj, że ten dokładny URI znajduje się na liście dozwolonych adresów redirect URI.
Napraw: Dodaj dokładny adres callback URL do listy dozwolonych adresów redirect URI aplikacji IdP i zapisz.
5. Ustawienia realmu Keycloak
Gdy VaultPAM korzysta z osadzonej lub samodzielnie hostowanej instancji Keycloak, błędnie skonfigurowane ustawienia realmu mogą uniemożliwić logowanie nawet wtedy, gdy klient OIDC jest poprawnie skonfigurowany.
Typowe problemy specyficzne dla Keycloak:
- Realm jest wyłączony lub w trybie tylko do odczytu.
- Access Type klienta jest ustawiony na
public, podczas gdy VaultPAM oczekujeconfidential. - Wymagane zakresy
openid,emaillubprofilenie są zmapowane w kliencie. - Valid Redirect URIs w kliencie Keycloak nie zawiera adresu callback URL VaultPAM.
Sprawdź: Otwórz konsolę administracyjną Keycloak, przejdź do Realms → [nazwa realmu] → Clients → [klient VaultPAM] i zweryfikuj:
- Klient jest Enabled.
- Access Type to
confidential. - Valid Redirect URIs zawiera adres callback URL VaultPAM.
- Client Scopes zawierają
openid,emailorazprofile.
Napraw: Popraw ustawienia klienta Keycloak i zapisz. W przypadku większości zmian konfiguracji Keycloak ponowne uruchomienie nie jest wymagane.
Kroki rozwiązania
- Otwórz Organization → Security → SSO Settings i zweryfikuj, że OIDC Issuer URL, Client ID oraz Client Secret dokładnie odpowiadają rejestracji aplikacji IdP.
- Sprawdź zegary serwera na hoście VaultPAM oraz IdP. Jeśli rozbieżność przekracza 30 sekund, skonfiguruj NTP w obu systemach.
- W konsoli administracyjnej IdP potwierdź, że konto użytkownika istnieje, jest aktywne, a adres e-mail odpowiada adresowi e-mail konta VaultPAM.
- Potwierdź, że Callback URL wyświetlany w Organization → Security → SSO Settings znajduje się na liście dozwolonych adresów redirect URI w aplikacji IdP.
- Jeśli korzystasz z Keycloak, otwórz konsolę administracyjną Keycloak i zweryfikuj, że klient jest włączony, access type to
confidential, prawidłowe adresy redirect URI zawierają adres callback URL, a wymagane zakresy są zmapowane. - Po każdej zmianie wyczyść pliki cookie przeglądarki i ponów próbę logowania SSO z okna prywatnego/incognito, aby uniknąć zbuforowanego stanu sesji.
Ścieżka eskalacji
Jeśli przeanalizowałeś wszystkie pięć przyczyn, a logowanie SSO nadal kończy się niepowodzeniem:
- Przechwyć pełny adres URL wyświetlany w pasku adresu przeglądarki w momencie niepowodzenia (zawiera on kod błędu i opis jako parametry zapytania).
- Zbierz dziennik zdarzeń Keycloak lub IdP dla nieudanej próby uwierzytelnienia.
- Zanotuj dokładny komunikat o błędzie widoczny na ekranie.
- Otwórz zgłoszenie do pomocy technicznej, podając: typ i wersję Twojego IdP, adres URL błędu, fragment dziennika zdarzeń oraz potwierdzenie, które kroki już wykonałeś.