SSO(Single Sign-On) 은 1회의 사용자 인증으로 여러개의 애플리케이션 및 웹사이트에 대한 사용자 로그인을 허용하는 인증 솔루션이다.
SSO의 발단
만약 회사에서 접근해야 하는 사이트가 50개 있다고 생각해보자.
보안상 매번 로그인이 풀려있기라도 한다면, 일을 하면서 매번 사이트마다 로그인 하는데에만 시간을 다 보내게 될 것이다.
이때 조직에서는 보안
과 편의성
, 신속성
등을 모두 챙기기위하여 Access Management Strategy(접근 관리 전략)에 우선순위를 둔다.
SSO(Single Sign-On)는 한 번 자격증명이 검증된 사용제에게는 반복되는 로그인 없이 모든 암호 보호 리소스에 액세스 하도록하여 보안과 사용자 경험을 모두 충족할 수 있다.
암호 보안 강화
만약 SSO를 사용하지 않을 때는 각 사이트마다 규제가 달라서 아이디나 비밀번호 형식도 다를테고, 보안상의 이유로 한가지로 하지 않을 때도 있다.
SSO는 암호로 인한 번거로움을 방지하고 사용자가 여러 웹 사이트에 사용할 수 있는 강력한 비밀번호를 만들도록 권장한다.
생산성 향상
여러 웹 사이트에 한번의 인증만으로 프로세스를 간소화하고 보호된 리소스에 더 쉽게 액세스 할 수 있으므로 생산성이 향상된다.
비용 절감
SSO를 사용하지 않을 때는 각 사이트마다 아이디와 비밀번호가 달라서 사용자가 아이디/비밀번호를 잊어버리게 된다면, 빈번하게 아이디/비밀번호 변경 작업이 이루어질 것이다. 그렇게 된다면 변경요청이 빈번하게 발생하여 사내 IT팀의 작업 부하가 증가한다.
SSO를 구현하면 암호를 잊어버리는 일이 줄어들어 암호 재설정 요청을 처리할 때 지원 리소스를 최소화할 수 있다.
사용자 통합 로그인
: 사용자 통합 로그인 시스템에 대한 정보 관리인증 서버
: 인증서버 시스템에 대한 정보 관리통합 에이전트
: 각 정보 시스템에 대한 정보 관리LDAP(Lightweight Directory Access Protocol)
: 네트워크 상의 자원을 식별하고 인가된 사용자만 접근하도록 하는 Network Directory Service
- 사용자가 애플리케이션에 로그인하면 앱은 SSO Token을 생성하고, 인증 요청을 SSO 서비스로 보낸다.
- SSO Token은 사용자가 이전에 시스템에서 인증되었는지 확인한다. 인증된 경우, 애플리케이션에 인증 확인 응답을 전송하여 사용자에게 액세스 권한을 부여한다.
- 사용자에게 유효한 보안 인증 정보가 없는 경우 SSO Service는 사용자를 중앙 로그인 시스템으로 Redirection 한다.
- 사용자가 정보를 제출하면 SSO Service가 보안 인증 정보를 확인하고 응답을 애플리케이션으로 보낸다.
성공
: 원래 애플리케이션으로 Redirection
실패
: 오류메시지를 표시하며 보안 인증 정보를 다시 입력하도록 한다. (로그인 시도가 여러번 실패할 경우 SSO Service 에서 사용자가 일정 기간 동안 더 이상 시도하지 못하도록 차단할 수 있다.)
SSO Service
이 서비스는 일반적으로 전용 SSO policy server에서 실행됩니다.
SSO Token
1. 인증 대행 모델(Delegation)
- 인증 방식을 변경하기 어려울 경우 많이 사용
- 시스템 접근 시
통합 에이전트
가 인증 작업을 대행한다.
2. 인증 정보 전달 모델(Propagation)
- 웹 기반의 시스템에 주로 사용한다.
- 미리 인증된 토큰(Cookie 기능)을 받아서 각 시스템 접근 시 자동으로 전달한다.
SSO가 사용자 보안 인증 정보를 검증하고 인증하는 데 사용하는 다양한 표준 및 프로토콜이 있다.
우리는 여행을 갈 때 여권을 통해 신원확인을 간편하게 한다. 인터넷에서도 개인 신원 확인을 손쉽게 하기 위해 일일이 회원가입을 거치지않고 본인 인증을 손쉽게 할 수 있게 발전하고 있다.
위와 같은 서비스는 IDP(Identity Provider)
라고 불리는 신원 확인 서비스가 제공한다.
SAML(Security Assertion Markup Language)
- 애플리케이션이 SSO 서비스와 인증 정보를 교환하는 데 사용하는 프로토콜 또는 규칙 집합이다.
- 브라우저 친화적인 마크업 언어인 XML을 사용하여 사용자 식별 데이터를 교환한다.
- SAML 기반 SSO 서비스는 애플리케이션이 사용자 보안 인증 정보를 시스템에 저장할 필요가 없으므로 더 나은 보안과 유연성을 제공한다.
OAuth(Open Authorization)
(velog 로그인 화면)
- 애플리케이션이 암호를 제공하지 않더라도 다른 웹 사이트의 사용자 정보에 안전하게 액세스 할 수 있도록 하는 개방형 표준이다.
- OAuth는 API를 통해 애플리케이션 간의 신뢰 관계를 설정하며, 애플리케이션은 이를 통해 설정된 프레임워크에서 인증 요청을 보내고 응답할 수 있다.
OIDC(Open ID Connect)
- 단일 사용자 보안 인증 정보 세트를 사용하여 여러 사이트에 액세스 하는 방법이다.
- 웹 애플리케이션은 인증 토큰을 Third-party ID Provider에게 전달하는 대신, OIDC를 사용하여 추가 정보를 요청하고 사용자의 신뢰성을 검증한다.
Kerberos
- 둘 이상의 당사자가 네트워크에서 신원을 서로 검증할 수 있는 티켓 기반 인증 시스템이다.
- 보안 암호화를 사용하여 서버, 클라이언트 및 키 배포 센터 간에 전송되는 식별 정보에 대한 무단 액세스를 방지한다.