오늘은 SSO 인증에 대해서 알아보자.
통합인증(Single Sign-On : SSO)은 SSO는 한 번의 사용자 인증으로 다수의 애플리케이션 및 웹사이트에 대한 사용자 로그인을 허용하는 인증 솔루션이다.
많은 기업들이 대형화되고 여러 사이트들을 통합 관리하게 되면서 SSO를 사용하고 있다.(ex) 통합 로그인)
SSO를 사용하면 개인 입장에서는 사이트마다 로그인을 안해서 좋고, 기업 입장에서는 회원에 대한 통합 관리가 가능하다는 장점이 있다.
인증은 하나의 서버에서 수행하고, 그 인증 서버가 서비스를 담당하는 타겟 서버에 인증 정보를 알려주는 방식이다.
위에서도 말했지만 SSO를 이용하면 사용자는 로그인의 번거로움에서 해방되고 기업 입장에서는 회원 관리가 편해진다.
SSO는 서비스의 특성에 따라 두 가지 모델을 혼용하여 구성할 수 있다.
SSO 에이전트 대행
유저가 서비스에 접근할 때 발급받은 토큰을 서비스에 같이 전달하고, 서비스는 토큰 정보를 통해 사용자를 인식한다.
- SSO는 인증 절차를 거치지 않고 1개의 계정만으로 다양한 시스템 및 서비스에 접속할 수 있어 편의성이 높고 관리 비용 절감 효과가 있다.
- 같은 아이디마다 암호를 재 입력하는 시간을 줄인다.
- 암호를 재발급 헬프데스크 비용을 줄인다.
- 한 번의 인증으로 많은 정보를 제공하기 때문에 해킹의 피가가 늘어날 수 있다.
- 아이디 접속 권한을 잃어버리면 모든 서비스를 사용할 수 없다.
- 각각의 서비스마다 보안 수준이 다르면 보안 문제가 생길 수 있다.
이전 글에서는 로그인 시 웹 서버로부터 Session ID를 쿠키로 받고, 그 쿠키를 로그인할 때 사용하는 방식에 대해 알아보았다.
하지만 이 방법은 매 요청마다 서버가 Session 정보를 확인해야하는 부담과 서버가 Session 정보를 DB 등에 저장해야한다는 단점이 있다.
반면 토큰 방식은 Session 방식과 달리 서버가 로그인한 사용자의 세션 정보를 따로 보관하지 않는다.
한 번 인증 토큰이 클라이언트에 발급되면, 이후 요청부터 클라이언트는 그 토큰을 포함하고 서버가 클라이언트의 요청에 포함된 토큰을 그때 그때 확인하는 방식이다.
SSO에 대해 적으면서 "인증 토큰"이 나왔는데 이 인증 토큰의 대표적인 기술로는 JWT(JSON Web Token)가 있다.
이건 또 다음에 알아보자.
SSO를 사용하면 하나의 계정으로 모든 서비스를 이용할 수 있다.
예를 들면 카카오톡, 카카오택시, 카카오웹툰 등 처럼
이 서비스들은 DB가 각각 분리되어있는데 어떻게 회원을 공유하고 있을까?
이것도 다음에 알아보자^__^
출처
https://post.naver.com/viewer/postView.naver?volumeNo=30925125&memberNo=15488377
https://blueyikim.tistory.com/252
https://bluehorn07.github.io/2021/05/02/SSO.html
https://blog.bespinglobal.com/post/server-%ec%84%9c%eb%b2%84-%ec%9d%b8%ec%a6%9d-%ec%9d%b4%ed%95%b4%ed%95%98%ea%b8%b0-2%eb%b6%80-sso/