혼자공부한거

SSO 란 무엇일까

컴공코딩러 2024. 11. 22. 14:25

SSO는 

이름 그대로 단일 로그인, 즉 한번의 로그인으로 여러개의 애플리케이션들을 이용할 수 있게해주는 서비스 입니다.

 

한번의 로그인으로 구글 관련 서비스를 모두 이용할수 있는것이다.

 

장점

ID/Password 개별 관리의 위험성 해소

사용자 편의성 증가

단점

구축비용이 비싸고 시스템 복잡도 증가
Single Point of Failure

구현 방식

위임(Delegation) 방식

SSO 에이전트가 인증을 대행하는 방식

  • 대상 애플리케이션의 인증 방식을 변경하기 어려울 때 많이 사용
  • 사용자의 인증 정보를 SSO 에이전트가 관리하며 로그인 대신 수행

 

이건 앞단에 SSO 서버를 두고 리버스 프록시 형태로 서비스를 제공한다.

사용자의 인증 정보를 Agent가 관리하여 대신 로그인 해주는 방식이다.

EX ) ID / password로 로그인하면 에이전트가 해당 정보를 가지고 로그인 수행해준다.

 

 

전파(Propagation) 방식

SSO에서 인증을 수행하고, 토큰 발급하고 전달하여 인증 수행

 

 

위임(Delegation) 방식

SSO 에이전트가 인증을 대행하는 방식

  • SSO에서 인증을 받아 대상 애플리케이션으로 전달할 토큰 생성
  • 애플리케이션에선 SSO의 토큰을 검증하고 인증된 것으로 처리

JWT 토큰처럼 토큰을 발급받아 서비스를 사용한다.

 

웹 기반 SSO

  • 전파 방식의 경우 쿠키를 통해 토큰을 저장한다.
    • 토큰 쿠키가 있을 경우 토큰값을 검증해 로그인을 수행한다.
    • 쿠키에 저장된 토큰은 필히 암호화하여야 한다.
  • 위임 방식의 경우 저장해둔 ID/비밀번호를 POST로 전달하여 로그인 한다.
    • 또는 ID/비밀번호를 대신할 수 있는 토큰을 URL(GET) 방식으로 전달하여 로그인 한다.

 

 

출처

https://gruuuuu.github.io/security/ssofriends/

 

https://itwiki.kr/w/SSO