IdP-initiowane SSO vs SP-initiowane SSO
Dowiedz się więcej o różnicach między IdP-initiowanym SSO a SP-initiowanym SSO i dlaczego SP-initiowane SSO jest bardziej bezpieczne.
Dowiedz się więcej o różnicach między IdP-initiowanym SSO a SP-initiowanym SSO i dlaczego SP-initiowane SSO jest bardziej bezpieczne.
Jak sama nazwa wskazuje, SP-initiowane SSO jest inicjowane przez dostawcę usług. Użytkownik rozpoczyna proces uwierzytelniania, uzyskując dostęp do zasobu na stronie SP. SP następnie przekierowuje użytkownika do IdP w celu uwierzytelnienia. Po uwierzytelnieniu użytkownika, IdP generuje token (OIDC) lub asercję SAML (SAML) i wysyła go z powrotem do SP. SP weryfikuje token lub asercję i przyznaje użytkownikowi dostęp.
W przeciwieństwie do SP-initiowanego SSO, IdP-initiowane SSO jest inicjowane przez dostawcę tożsamości. Użytkownik rozpoczyna proces uwierzytelniania z witryny IdP. Zwykle użytkownik znajdzie listę obsługiwanych aplikacji SP na portalu IdP. Użytkownik klika aplikację SP i jest przekierowywany na stronę internetową SP z wstępnie uwierzytelnioną tożsamością.

IdP-initiowane SSO jest bardziej przyjęte przez duże przedsiębiorstwa i organizacje, które polegają na różnych aplikacjach lub usługach firm trzecich, takich jak Workday, Salesforce itp. Zapewnia to centralny sposób zarządzania dostępem użytkowników do wielu aplikacji i egzekwowania uwierzytelnienia SSO. Dzięki włączeniu IdP-initiowanego SSO, pracownicy mogą bezpośrednio uzyskiwać dostęp do połączonych aplikacji z portalu IdP, bez konieczności odwiedzania strony internetowej każdej aplikacji, co skraca czas wdrożenia i poprawia wrażenia użytkownika.
IdP-initiowane SSO niesie większe ryzyko w porównaniu z SP-initiowanym SSO.
Brak kontekstu uwierzytelniania: Wszystkie żądania uwierzytelnienia zainicjowane przez IdP są niezamawiane. W ten sposób SP inicjuje proces uwierzytelniania, potencjalnie otwierając drzwi do nieautoryzowanego dostępu. Istnieje ryzyko, że sesja użytkownika może zostać przechwycona. Złośliwy aktor mógłby zainicjować proces logowania dla legalnego użytkownika bez jego wiedzy lub zgody.
Utrwalanie sesji: Ponieważ SP nie inicjuje procesu uwierzytelniania, sesja użytkownika może być związana z sesją IdP. Może to prowadzić do ataków utrwalających sesję, gdzie atakujący mógłby utrwalić sesję użytkownika z sesją IdP i uzyskać nieautoryzowany dostęp do konta użytkownika.
Ataki phishingowe: IdP-initiowane SSO może być podatne na ataki phishingowe. Złośliwy aktor mógłby oszukać użytkownika, zmuszając go do odwiedzenia fałszywego portalu IdP i kradzieży danych uwierzytelniających użytkownika. Gdy użytkownik się zaloguje, atakujący mógłby przekierować użytkownika na SP z wstępnie uwierzytelnioną tożsamością.
Brak pewności co do walidacji żądania: W SP-initiowanym SSO zwykle SP uwzględnia niezbędne informacje zabezpieczające w żądaniu do IdP, aby utrzymać integralność żądania. Gdy SP otrzyma odpowiedź na uwierzytelnienie, zweryfikuje te informacje, aby zapobiec atakom CSRF. Na przykład parametr state w OIDC i RelayState w SAML. Jednak w IdP-initiowanym SSO, SP nie inicjuje procesu uwierzytelniania, w związku z czym SP nie ma pewności co do walidacji żądania.
IdP-initiowane SSO nie jest obsługiwane przez OIDC z powodu powyższych podatności. OIDC wymaga, aby SP inicjował proces uwierzytelniania, aby zapewnić integralność żądania. Nawet w przypadkach, gdy użytkownicy rozpoczynają proces uwierzytelniania od strony trzeciej, która nie jest SP, użytkownik powinien być najpierw skierowany do SP, aby zainicjować proces uwierzytelniania.
Ale w SAML, IdP-initiowane SSO jest możliwe. IdP może generować asercję SAML bez inicjowania procesu uwierzytelniania przez SP. W SAML IdP-initiowanym SSO, asercja SAML bez odpowiedniego RequestID i RelayState może być wysłana bezpośrednio na adres URL ACS SP. SP powinien być w stanie obsłużyć tego rodzaju asercję i przyznać dostęp użytkownikowi. (Uwaga: Bez RequestID i RelayState, SP nie ma pewności co do integralności żądania).
Choć IdP-initiowane SSO zapewnia centralizowany sposób zarządzania dostępem użytkowników do wielu aplikacji, niesie ze sobą większe ryzyko w porównaniu do SP-initiowanego SSO. SP-initiowane SSO jest bardziej bezpieczne i zapewnia większą pewność co do integralności żądania uwierzytelniającego. Zaleca się używanie SP-initiowanego SSO zarówno dla OIDC, jak i SAML opartego SSO.