SSO(Single Sign On)
여러 서비스를 로그인 한번으로 이용하도록 하는 기술
용어
- SP(Service Provider): 서비스 제공자, 어플리케이션
- Idp(Identity Provider): SP들의 인증 관련 부분만 모아서 구현해 놓은 것(하나의 웹 서비스)
어떻게 동작할까?
ex) 구글 드라이브를 사용하는 시나리오
- 사용자가 SP(Service Provider/서비스 제공자)를 사용하려고 합니다.
- 사용자의 세션 정보가 SP(구글 드라이브)에 남아있지 않아서, SP는 사용자를 idP(구글 통합 로그인 페이지)로 redirect시킵니다.
- 사용자의 세션 정보가 IdP에 남아있지 않아서, 사용자는 IdP에서 로그인(또는 어떤 방식으로든 ‘인증’)합니다.
- 인증이 완료되면, IdP는 사용자를 SP로 다시 redirect시키며, 동시에 사용자의 ‘인증 정보’를 SP에게 전달합니다.
- 로그인 처리가 완료되어 구글 드라이브를 사용할 수 있습니다.
이 직후에, Gmail을 사용하면 사용자 흐름은 아래와 같습니다.
- 사용자가 SP(Gmail)을 사용하려 합니다.
- 사용자의 세션 정보가 SP에 남아있지 않아서, SP는 사용자를 IdP로 redirect 시킵니다.
- 사용자의 세션 정보가 IdP에 남아있습니다. 그러면 IdP는 사용자를 SP로 다시 redirect시키며, 동시에 사용자의 ‘인증 정보’를 SP에게 전달합니다.
- 로그인 처리가 완료되어 Gmail을 사용할 수 있습니다.
어떻게 구현할까?
SSO시스템을 구혈할 때의 가장 중요한 포인트는, IdP에서 SP로 사용자 인증 정보 전달을 처리할 때의 보안입니다. 이 부분은 여러 표준,프레임워크 등에 의해 구현할 수 있습니다. 그 중에 대표적으로 OAuth, JWT등이 있습니다.
[참고블로그](