싱글 사인온(SSO)이란?

업데이트: 2026년 10월

싱글 사인온(SSO)은 ID 공급자에서 한 번 로그인하면 서로 독립된 여러 애플리케이션에 접근할 수 있게 하는 인증 방식입니다. 등장하는 역할은 둘입니다. ID 공급자(IdP)는 사용자를 인증하고 그 신원을 보증하며, 각 서비스 공급자(SP), 즉 사용자가 실제로 쓰려는 앱은 자체 로그인을 운영하는 대신 그 보증을 신뢰합니다. 짚어 둘 만한 엄밀한 구분이 하나 있습니다. 여러 앱이 디렉터리를 공유하면서도 각자 비밀번호를 묻는다면 그것은 동일 사인온(same sign-on)이고, 진정한 SSO는 한 번만 묻습니다.

핵심 요약

질문답변
등장 역할IdP가 인증하고 보증 · SP는 그 보증을 신뢰
메커니즘리디렉션 + 서명된 어설션 – 비밀번호는 IdP 밖으로 나가지 않습니다
프로토콜SAML(XML, 엔터프라이즈 레거시) · OIDC(OAuth 위의 JWT, 현대의 기본값)
트레이드오프훌륭한 정문 하나, 그리고 그 뒤의 모든 것만큼 가치 있는 문 하나
약관의 세부 조항단일 로그아웃은 어렵습니다 · 세션은 여러 개의 시계로 움직입니다 · SaaS에서 SSO는 추가 요금 대상입니다

리디렉션 절차, 단계별로

애초에 리디렉션이 왜 필요합니까? 브라우저의 동일 출처 정책 때문입니다. app.example.com은 idp.example.org의 로그인 쿠키를 읽을 수 없으므로, 신원은 공유 쿠키가 아니라 브라우저를 거쳐 가는 서명된 메시지로 이동해야 합니다. 흐름이 하는 일이 정확히 그것입니다:

1  사용자가 app.example.com을 엶 – 세션 없음
2  SP가 인증 요청과 함께 IdP로 리디렉션
3  사용자가 IdP에서 직접 인증(비밀번호 + MFA) – 또는 이미
   IdP 세션이 있어 이 단계가 조용히 생략됨
4  IdP가 서명된 어설션(SAML XML) 또는 ID 토큰(OIDC JWT)을 발급
5  브라우저가 이를 SP의 콜백 URL로 전달
6  SP가 검증: 서명 · 발급자 · 대상 · 만료 · 재전송
7  SP가 자체 로컬 세션을 시작 – 사용자 로그인 완료
8  다음 앱: 1–2단계 후, 3단계의 조용한 경로에서 곧바로 7단계로

백엔드가 이 과정을 감싸 처리할 때 서비스 공급자 쪽 코드는 다음과 같습니다.

// JavaScript / Node.js — Back4app JS SDK
// Enterprise SSO: the IdP authenticates; the app trusts its signed token
// After the OIDC redirect dance, the client holds the IdP's tokens:
const user = await Parse.User.logInWith('keycloak', {
  authData: {
    id: subClaim,              // the IdP's stable subject ID
    access_token: accessToken, // verified server-side against the IdP
  },
});
// One IdP login now serves every app that trusts the same issuer.
서비스 공급자와 ID 공급자 사이의 싱글 사인온 흐름서비스 공급자에서 인증되지 않은 사용자는 ID 공급자로 리디렉션되어 MFA로 한 번 인증하고, 서명된 어설션을 받아 서비스 공급자에게 전달합니다. 서비스 공급자는 이를 검증하고 로컬 세션을 시작합니다. 두 번째 애플리케이션도 같은 리디렉션을 거치지만, 이미 존재하는 ID 공급자 세션 덕분에 로그인이 조용히 이루어집니다.

리디렉션 + 인증 요청

서명된 어설션

검증 → 로컬 세션

리디렉션

세션 존재 –
조용한 어설션

사용자

앱 A (SP)
세션 없음

ID 공급자
로그인 + MFA · 전역 세션

앱 A 열림

같은 사용자, 나중에

앱 B (SP)

앱 B 열림,
로그인 화면 없음

서비스 공급자에서 인증되지 않은 사용자는 ID 공급자로 리디렉션되어 MFA로 한 번 인증하고, 서명된 어설션을 받아 서비스 공급자에게 전달합니다. 서비스 공급자는 이를 검증하고 로컬 세션을 시작합니다. 두 번째 애플리케이션도 같은 리디렉션을 거치지만, 이미 존재하는 ID 공급자 세션 덕분에 로그인이 조용히 이루어집니다.

SP 시작 방식 vs. IdP 시작 방식

CriterionSP 시작 방식IdP 시작 방식
시작 지점앱(“SSO로 로그인”)IdP 대시보드의 타일
요청SP가 인증 요청을 발행없음 – 어설션이 요청 없이 도착
응답의 결속어설션이 특정 요청에 대한 응답대조할 요청이 없음
보안 수준기본값 – 재전송 검사가 요청에 고정됨역사적으로 더 약함 – 요청하지 않은 어설션은 주입 공격을 부름
지원 여부항상 지원IdP가 요구하는 경우에만, 추가 검증과 함께

대부분의 설명은 첫 번째만 다루고 두 번째는 이름조차 언급하지 않습니다. 그러나 엔터프라이즈 IdP는 대시보드 타일을 좋아하므로 SP는 둘 다 마주치게 됩니다. SAML 기술 개요는 두 프로파일을 모두 규정하며, 실무 규칙은 표의 마지막 행에 있습니다.

SAML vs. OIDC

CriterionSAML 2.0OpenID Connect
시대와 형식2005 · XML 어설션2014 · OAuth 2.0 위의 JWT
전송브라우저 POST/리디렉션 바인딩REST + 리디렉션
적합한 곳엔터프라이즈 웹 앱, 레거시 IdP모바일, SPA, API – 현재의 모든 것
개발자 경험장황하고, 깨지기 쉬우며, 라이브러리 의존적읽기 쉬운 토큰, 표준 흐름
결론고객의 IdP가 사용하므로 지원새로 만드는 모든 것에 선택

그리고 약어의 실타래를 푸는 삼각형을 한 번만 정리하면 이렇습니다. SAML과 OIDC는 SSO를 위한 인증을 수행하고, OAuth 2.0 단독으로는 인가 프로토콜입니다. OIDC는 OAuth의 메커니즘을 로그인에 안전하게 쓸 수 있도록 만든 신원 계층입니다. 소셜 로그인은 같은 OIDC 메커니즘에서 소비자 플랫폼이 IdP가 되고 하나의 앱이 대상이 되는 경우이며, 엔터프라이즈 SSO는 IdP의 운영 주체를 조직으로 바꾸고 세션을 제품군 전체로 넓힌 것입니다.

아무도 언급하지 않는 부분

단일 로그아웃(SLO)이 더 어려운 쪽입니다. 로그인은 하나의 IdP로 모여들지만, 로그아웃은 로컬 세션을 가진 모든 SP로 퍼져 나가야 합니다. 그리고 앱 하나가 응답하지 않으면 사슬이 끊어지고, 브라우저의 서드파티 쿠키 제한은 프론트 채널 알림을 깨뜨리며, 다른 디바이스에는 아무것도 전달되지 않습니다. 실제로 “모든 곳에서 로그아웃”이란 신뢰할 수 있는 브로드캐스트가 아니라, (종료된) IdP 세션을 다시 확인하는 짧은 로컬 세션을 뜻합니다. 세션은 세 개의 시계로 움직입니다. IdP의 전역 세션, 각 앱의 로컬 세션, 그리고 어설션 자체의 유효 기간입니다. IdP 세션이 살아 있는 동안 앱에서 로그아웃하면 다음 방문 때 조용히 다시 로그인됩니다. 사용자는 이를 버그로 신고하지만, 아키텍트는 이것이 설계임을 알아야 합니다. 그리고 SSO 세금이 있습니다. SaaS 벤더들은 SAML/SSO 지원을 기본 요금의 몇 배에 이르는 엔터프라이즈 등급 뒤에 두는 경우가 흔합니다. 보안 팀의 요구 사항과 구매 품목이 함께 도착하므로, 예산에 반영해 둘 만한 시장의 현실입니다.

영향 범위, 정직하게

SSO는 의도적으로 위험을 집중시킵니다. “싱글”의 의미가 바로 그것입니다. 탈취된 IdP 계정 하나는 연결된 모든 앱을 엽니다. 탈취된 IdP 자체는, 어설션 서명 키를 도난당하는 “골든 어설션” 공격 패턴을 포함해, 누구에게든 어디서든 유효한 신원을 찍어 낼 수 있습니다. 벤더들은 이 점을 완곡하게 표현하지만, 엔지니어링의 답은 그 집중을 현명하게 활용하는 것입니다. IdP에서의 피싱 방지 MFA(하나의 로그인이 이제 패스키 수준의 보호를 받을 가치가 있습니다), 하나의 포괄적 세션 대신 민감한 앱을 위한 단계적 인증, 위험이 큰 곳에서의 짧은 전역 세션, 서명 키 회전과 모니터링, 그리고 IdP가 다운되는 날을 위한 비상용 로컬 계정입니다. 단일 장애점은 결코 사라지지 않습니다. 대신 그 지점의 방어를 집중적으로 강화합니다. 한 지점만 강화하면 된다는 것이야말로 SSO가 약속한 경제성이기 때문입니다.

서비스 공급자로서의 통합

“SSO를 지원합니다”라는 말이 앱 팀에 실제로 요구하는 것을 하나의 목록으로 정리하면 다음과 같습니다. 콜백/ACS URL을 IdP에 등록하고 메타데이터(발급자, 인증서)를 교환합니다. 모든 어설션마다 서명, 발급자, 대상, 만료, 재전송 결속을 빠짐없이 검증합니다. IdP의 클레임을 사용자 모델에 매핑하되, 키는 이메일만이 아니라 안정적인 주체 ID여야 합니다. JIT(just-in-time) 프로비저닝으로 첫 SSO 로그인 때 로컬 사용자를 생성합니다. IdP 시작 방식으로 들어오는 어설션을 의도적으로 처리합니다. 그리고 로그아웃에 대한 기대치를 위에서 설명한 세 시계의 현실에 비추어 테스트합니다. 많은 팀이 걸어 온 길이며, 그래서 핸드셰이크의 반대편을 위한 Keycloak 같은 오픈소스 IdP가 존재합니다. 그러나 건너뛴 항목 하나하나가 언젠가 반드시 지적될 보안 취약점이 됩니다.

일반적인 사용 사례

  • 임직원용 앱 제품군 – 대표적인 경우입니다. 아침에 한 번 로그인하면 그 뒤로 모든 내부 도구와 SaaS 도구가 열립니다.
  • 대기업 시장으로 진출하는 B2B SaaS – “SSO 지원”은 엔터프라이즈 계약의 관문이 되는 체크박스입니다.
  • 교육과 의료 – 기관 간 연합 접근으로, SAML의 뿌리가 가장 깊은 분야입니다.
  • 중앙 집중식 MFA와 오프보딩 – 인증 요소를 강제하는 단일 지점이자, 퇴사자의 접근을 모든 곳에서 끊는 단일 스위치입니다.
  • 다중 앱 제품 – 자체 제품군이 자체 IdP를 통해 소비자 방식으로 하나의 로그인을 공유합니다.

SSO를 도입해야 할까? 결정 매트릭스

상황권장 방향
기업을 상대로 판매예 – OIDC + SAML, 계약 성사의 관문
하나의 임직원 IdP 뒤에 있는 내부 도구예 – MFA와 오프보딩을 중앙 집중화
소비자 앱소셜 로그인 – 같은 메커니즘, 소비자 IdP
앱 하나, 작은 팀세션 + MFA로 충분 – 세 번째 앱이 생기면 재검토
SSO 뒤의 고보증 앱단계적 인증 추가 – 포괄적 세션에 의존하지 않기
지금 프로토콜을 선택한다면OIDC 우선, 요구하는 고객을 위해 SAML

한계와 트레이드오프

  • 가용성은 신원과 함께 집중됩니다. IdP의 다운타임은 모두의 로그인 장애입니다. 이중화와 비상 경로는 기능에 덧붙이는 것이 아니라 기능의 일부입니다.
  • 로그아웃은 로그인보다 약합니다. SLO의 팬아웃은 구조적으로 부분적인 실패를 피할 수 없습니다. 실제 보장을 제공하는 것은 로그아웃 브로드캐스트가 아니라 짧은 로컬 세션입니다.
  • 롱테일은 비밀번호로 남습니다. SSO를 지원하지 않는 앱은 자체 자격 증명을 유지하며, 비밀번호 관리자가 여전히 그 뒷정리 계층을 맡습니다.
  • 세션 계층 구조는 사용자를 혼란스럽게 합니다. 조용한 재로그인과 “로그아웃했는데 안 됐다”는 티켓은 세 시계 설계의 UX 비용이며, 문서화와 예측 가능한 타임아웃이 그 비용을 줄여 줍니다.
  • 통합 품질은 SP마다 다릅니다. SSO의 보안 상한은 연결된 앱 중 가장 허술한 어설션 검증이 결정합니다. 위의 체크리스트는 앱마다, 그리고 영구히 적용됩니다.

Back4app에서의 SSO

Back4app은 관리형 데이터베이스, 자동 생성되는 REST 및 GraphQL API, 인증, 파일 스토리지, Cloud Code 서버리스 함수를 결합한 오픈소스 Backend as a Service(BaaS) 플랫폼입니다. 이곳의 앱은 소셜 로그인을 구동하는 것과 같은 어댑터 메커니즘을 통해 서비스 공급자로서 SSO 환경에 합류합니다. Back4app은 Keycloak, LDAP, 범용 OAuth2/OIDC 발급자용 인증 어댑터를 제공하므로, 코드 탭의 흐름(IdP가 인증하고, 앱이 토큰을 받으며, logInWith가 서버 측에서 발급자를 통해 토큰을 검증하는 흐름)이 엔터프라이즈 SSO를 설정과 리디렉션 핸들러 하나로 바꿉니다. 신원은 제공업체별 authData에서 IdP의 안정적인 주체 ID를 키로 하고, 첫 로그인이 사용자를 JIT 방식으로 프로비저닝하며, linkWith는 비상 경로를 위한 추가 방법을 연결하고, 앱이 발급하는 세션은 폐기 가능한 Parse 세션으로 유지됩니다. 따라서 세 시계로 이루어진 계층 구조에서 앱 쪽의 마지막 시계는 여러분이 완전히 통제할 수 있습니다.

자주 묻는 질문

SSO를 쉽게 설명하면 무엇입니까?

한 번의 로그인으로 여러 앱을 여는 방식입니다. 사용자는 중앙의 ID 공급자에게 한 번만 신원을 증명하고, 연결된 모든 애플리케이션은 각자 비밀번호를 묻는 대신 그 증명을 신뢰합니다. 아침에 회사 포털에 로그인하면 이메일, 위키, CRM이 별도 로그인 없이 열리는 것이 바로 SSO가 동작하는 모습입니다.

SSO는 어떻게 동작합니까?

리디렉션과 서명된 토큰으로 동작합니다. 앱은 인증되지 않은 사용자를 ID 공급자로 보내고, 사용자는 그곳에서 비밀번호와 MFA로 인증합니다. IdP는 디지털 서명된 어설션을 발급하고 브라우저가 이를 앱으로 전달합니다. 앱은 미리 교환한 인증서로 서명을 검증한 뒤 세션을 시작합니다. 다음 앱에서는 IdP 세션이 이미 있으므로 로그인 단계가 생략됩니다.

SSO는 안전합니까?

ID 공급자가 MFA를 강제한다면 전체적으로 이득입니다. 피싱당할 비밀번호의 수가 줄고, 정책, 감사, 계정 잠금이 한곳에 모입니다. 솔직히 말해 대가는 위험의 집중입니다. 탈취된 IdP 계정 하나, 또는 IdP 자체가 그 뒤의 모든 것을 엽니다. SSO는 정문을 훌륭하게 만드는 동시에 정문을 하나뿐인 문으로 만듭니다.

SSO와 비밀번호 관리자의 차이는 무엇입니까?

비밀번호 관리자는 여러 비밀을 저장하고 자동으로 입력해 줄 뿐, 각 앱은 여전히 자체 로그인을 운영합니다. SSO는 앱별 비밀번호 자체를 없앱니다. 앱은 인증을 IdP에 위임하며 사용자의 자격 증명을 전혀 보관하지 않습니다. 둘은 상호 보완적이며, SSO를 지원하지 않는 수많은 앱은 비밀번호 관리자가 맡습니다.

소셜 로그인과 SSO는 같은 것입니까?

동작 원리는 같고 IdP를 운영하는 주체가 다릅니다. 둘 다 ID 공급자로 향하는 OIDC 방식의 리디렉션 흐름입니다. 다만 소셜 로그인은 소비자 플랫폼의 IdP로 하나의 앱에 로그인하는 반면, 엔터프라이즈 SSO는 조직이 통제하는 IdP를 사용하며 그 단일 세션이 애플리케이션 제품군 전체에 걸칩니다.

SSO에는 SAML과 OIDC 중 무엇을 써야 합니까?

새로 만드는 것에는 OIDC입니다. REST 위의 JSON과 JWT를 사용하고, 모바일과 SPA에 친화적이며, 구현과 디버깅이 더 쉽습니다. SAML은 호환성을 위한 선택으로, 엔터프라이즈 ID 공급자에 깊이 자리 잡은 XML 시대의 프로토콜입니다. 기업을 상대로 판매하는 제품은 대개 둘 다 지원하게 됩니다.

SSO를 쓰더라도 MFA가 필요합니까?

반드시 필요합니다. SSO는 하나의 로그인을 덜 중요하게 만드는 것이 아니라 더 가치 있게 만듭니다. 이를 상쇄하는 장점도 있습니다. ID 공급자에서 MFA를 강제하면 연결된 모든 애플리케이션이 한 번에 보호되며, 이것이 바로 SSO가 존재하는 이유인 중앙 집중화입니다.

ID 공급자가 다운되면 어떻게 됩니까?

연결된 어떤 앱에서도 새 세션을 시작할 수 없습니다. 이미 존재하는 앱 세션은 만료될 때까지 유지됩니다. 이것이 단일 장애점의 가용성 측면이며, IdP 이중화, 비상용(break-glass) 관리자 계정, 대체 경로를 사후 분석이 아니라 도입 계획에 넣어야 하는 이유입니다.

관련 용어

비교 대상

참고 자료

백엔드를 구축할 준비가 되셨나요?

몇 분 안에 Back4app에서 프로젝트를 시작하세요. 데이터베이스, 인증, API, Cloud Code가 포함되어 있으며 신용카드는 필요 없습니다.

작성 및 검수: Back4app Engineering, Back4app Engineering · 게시일 2026-10-29