IdP-initiated SSO vs SP-initiated SSO
IdP-initiated SSO와 SP-initiated SSO의 차이점과 SP-initiated SSO가 더 안전한 이유에 대해 알아보세요.
IdP-initiated SSO와 SP-initiated SSO의 차이점과 SP-initiated SSO가 더 안전한 이유에 대해 알아보세요.
이름에서 알 수 있듯이 SP-initiated SSO는 서비스 제공자가 시작합니다. 사용자는 SP의 웹사이트에서 리소스를 접근함으로써 인증 프로세스를 시작합니다. SP는 사용자를 인증을 위해 IdP로 리디렉션 합니다. 사용자가 인증되면, IdP는 토큰(OIDC) 또는 SAML 어설션(SAML)을 생성하여 SP로 보냅니다. SP는 토큰이나 어설션을 검증하고 사용자에게 접근 권한을 부여합니다.
SP-initiated SSO와 달리, IdP-initiated SSO는 신원 제공자가 시작합니다. 사용자는 IdP의 웹사이트에서 인증 프로세스를 시작합니다. 일반적으로 사용자는 IdP 포털에서 지원되는 SP 애플리케이션 리스트를 볼 수 있습니다. 사용자는 SP 애플리케이션을 클릭하고 사전 인증된 신원으로 SP의 웹사이트로 리디렉션됩니다.

IdP-initiated SSO는 Workday, Salesforce와 같은 다양한 서드파티 애플리케이션이나 서비스에 의존하는 대기업과 조직에서 더 많이 채택됩니다. 이는 사용자 접근을 여러 애플리케이션으로 중앙에서 관리하고 SSO 인증을 강제하는 방법을 제공합니다. IdP-initiated SSO를 활성화하면 직원들이 각 애플리케이션의 웹사이트를 방문할 필요 없이 IdP의 포털에서 직접 연결된 애플리케이션에 접근할 수 있습니다. 이는 온보딩 시간을 줄이고 사용자 경험을 향상시킵니다.
IdP-initiated SSO는 SP-initiated SSO에 비해 더 많은 위험을 가지고 있습니다.
인증 컨텍스트 부족: IdP에서 시작된 모든 인증 요청은 비자발적입니다. 따라서 SP는 인증 프로세스를 시작하며, 이는 비인가된 접근에 대한 문이 열릴 수 있습니다. 사용자의 세션이 하이재킹될 위험이 있습니다. 악의적인 행위자가 사용자의 지식이나 동의 없이 합법적 사용자를 위한 로그인 프로세스를 시작할 수 있습니다.
세션 고정: SP가 인증 프로세스를 시작하지 않으므로, 사용자의 세션이 IdP의 세션으로 고정될 수 있습니다. 이는 공격자가 사용자의 세션을 IdP의 세션으로 고정할 수 있는 세션 고정 공격으로 이어질 수 있으며, 사용자의 계정에 비인가된 접근을 허용할 수 있습니다.
피싱 공격: IdP-initiated SSO는 피싱 공격에 취약할 수 있습니다. 악의적인 행위자가 사용자를 가짜 IdP 포털로 유도하여 사용자의 자격 증명을 훔칠 수 있습니다. 사용자가 로그인하면, 공격자는 사용자를 사전 인증된 신원으로 SP로 리디렉션할 수 있습니다.
요청 검증에 대한 보증 없음: SP-initiated SSO에서는 일반적으로 SP가 IdP에 요청에서 필요한 보안 정보를 포함하여 요청의 무결성을 유지합니다. SP가 인증 응답을 받으면 CSRF 공격을 방지하기 위해 이 정보를 검증합니다. 예를 들어, OIDC의 state 매개변수와 SAML의 RelayState. 그러나 IdP-initiated SSO에서는 SP가 인증 프로세스를 시작하지 않으므로, SP는 요청 검증에 대한 보증이 없습니다.
앞서 설명한 취약점 때문에 IdP-initiated SSO는 OIDC에 의해 지원되지 않습니다. OIDC는 요청의 무결성을 보장하기 위해 SP가 인증 프로세스를 시작하도록 요구합니다. 사용자가 SP가 아닌 서드파티로부터 인증 프로세스를 시작하는 경우에도, 사용자는 인증 프로세스를 시작하기 위해 먼저 SP로 리디렉션되어야 합니다.
그러나 SAML에서는 IdP-initiated SSO가 가능합니다. IdP는 SP가 인증 프로세스를 시작하지 않고도 SAML 어설션을 생성할 수 있습니다. SAML IdP-initiated SSO에서는 적절한 RequestID와 RelayState 없이 SAML 어설션이 SP의 ACS URL로 직접 전송될 수 있습니다. SP는 이런 종류의 어설션을 처리하고 사용자에게 접근 권한을 부여할 수 있어야 합니다. (참고: RequestID와 RelayState가 없으면 SP는 요청의 무결성에 대한 보증이 없습니다).
IdP-initiated SSO는 사용자 접근을 여러 애플리케이션으로 중앙에서 관리할 수 있는 방법을 제공하지만, SP-initiated SSO에 비해 더 많은 위험을 내포하고 있습니다. SP-initiated SSO는 더 안전하며 인증 요청의 무결성에 대한 더 많은 보증을 제공합니다. OIDC 및 SAML 기반 SSO에 대해 SP-initiated SSO를 사용하는 것이 권장됩니다.