SSO (Single Sign On)
SSO(Single Sign On)의 필요성
-
한번의 인증(로그인)으로 여러개의 도메인에 접근할 수 있도록 하는 방식
-
한사람이 세개의 도메인에 접속하려면 각각 로그인하여 각 도메인이 가지고 있는 DB에서 로그인 정보를 확인 후 인증을 받게 됨
-
그러나, 연관된 프로그램의 접근의 경우 여러번의 로그인을 요구하는 것은 불편할 것
-
한번의 로그인이 연관된 프로그램의 접근을 가능하게 하는 것이 SSO의 개념임
SSO(Single Sign On) 개념
-
IdP(Identity Provider)라는 곳에서 ID와 PW를 기억해 놓으면 각 어플케이션의 인증을 IdP가 대신함
SSO(Single Sign On) 동작 방법
먼저 구글 드라이브를 사용하는 시나리오를 생각 해 볼게요.
-
사용자가 SP(구글 드라이브)를 사용하려 합니다.
-
사용자의 세션 정보가 SP에 남아있지 않아서, SP는 사용자를 IdP(구글 통합 로그인 페이지)로 redirect 시킵니다
-
첫 로그인시에는 사용자의 세션 정보가 IdP에 남아있지 않아서, 사용자는 IdP에서 로그인(또는 어떤 방식으로든 '인증') 합니다.
-
인증이 완료되면, IdP는 사용자를 SP로 다시 redirect 시키며, 동시에 사용자의 '인증 정보'를 SP에게 전달합니다.
-
로그인 처리가 완료 되어 구글 드라이브를 사용할 수 있습니다.
그리고 이 직후에, 지메일을 사용하면 사용자 흐름은 아래와 같을 거에요.
-
사용자가 SP(지메일)을 사용하려 합니다.
-
사용자의 세션 정보가 SP에 남아있지 않아서, SP는 사용자를 IdP로 redirect 시킵니다.
-
사용자의 세션 정보가 IdP에 남아있습니다! 그러면 IdP는 사용자를 SP로 다시 redirect 시키며, 동시에 사용자의 '인증 정보'를 SP에게 전달합니다.
-
로그인 처리가 완료 되어 지메일을 사용할 수 있습니다.
SSO 예
-
SAML, OAuth, JWT(JSON Web Token) 등
-
There are many different implementations: OpenID Connect, Facebook Connect, SAML, Microsoft Account (formerly known as Passport)
출처 : https://hanee24.github.io/2018/08/04/sso/,https://auth0.com/blog/what-is-and-how-does-single-sign-on-work/