0%

SSO

SSO(Single Sign On)

여러 서비스를 로그인 한번으로 이용하도록 하는 기술

용어

  • SP(Service Provider): 서비스 제공자, 어플리케이션
  • Idp(Identity Provider): SP들의 인증 관련 부분만 모아서 구현해 놓은 것(하나의 웹 서비스)

어떻게 동작할까?

ex) 구글 드라이브를 사용하는 시나리오

  1. 사용자가 SP(Service Provider/서비스 제공자)를 사용하려고 합니다.
  2. 사용자의 세션 정보가 SP(구글 드라이브)에 남아있지 않아서, SP는 사용자를 idP(구글 통합 로그인 페이지)로 redirect시킵니다.
  3. 사용자의 세션 정보가 IdP에 남아있지 않아서, 사용자는 IdP에서 로그인(또는 어떤 방식으로든 ‘인증’)합니다.
  4. 인증이 완료되면, IdP는 사용자를 SP로 다시 redirect시키며, 동시에 사용자의 ‘인증 정보’를 SP에게 전달합니다.
  5. 로그인 처리가 완료되어 구글 드라이브를 사용할 수 있습니다.

이 직후에, Gmail을 사용하면 사용자 흐름은 아래와 같습니다.

  1. 사용자가 SP(Gmail)을 사용하려 합니다.
  2. 사용자의 세션 정보가 SP에 남아있지 않아서, SP는 사용자를 IdP로 redirect 시킵니다.
  3. 사용자의 세션 정보가 IdP에 남아있습니다. 그러면 IdP는 사용자를 SP로 다시 redirect시키며, 동시에 사용자의 ‘인증 정보’를 SP에게 전달합니다.
  4. 로그인 처리가 완료되어 Gmail을 사용할 수 있습니다.

어떻게 구현할까?

SSO시스템을 구혈할 때의 가장 중요한 포인트는, IdP에서 SP로 사용자 인증 정보 전달을 처리할 때의 보안입니다. 이 부분은 여러 표준,프레임워크 등에 의해 구현할 수 있습니다. 그 중에 대표적으로 OAuth, JWT등이 있습니다.

[참고블로그](