-
[지식] SSO: Single Sign-On알아두면 유용한 지식 2023. 6. 28. 13:21
정의
한 번의 로그인으로 여러 개의 서비스에 접근할 수 있게 해주는 인증 방식이다.
사용자가 서비스에 로그인할 때마다 ID 및 Password 입력이 번거로울 수 있기에 이런 불편함과 과정을 줄이고자 SSO가 개발되었다고 한다.
장점
기존에 본인이 자주 사용하던 비밀번호를 여러 서비스에 사용하게 되면 하나의 서비스에서의 보안 위협잉 다른 서비스에도 영향을 미칠 수 있다. 하지만 SSO는 이런 문제를 완화시켜준다.
많은 사람들이 사용하는 구글 계정이 SSO 방식이다. 구글 계정으로 로그인하면 유튜브, Gmail 등 다양한 구글 서비스를 한 번에 사용할 수 있다. 만약 SSO 방식이 아니었다면 우리는 각각의 서비스에 대한 모든 ID와 Password를 기억하고 사용했어야 했을 것이다.단점
모든 것에는 장단점이 있듯이 SSO 또한 단점이 존재한다.
위에서 언급했듯이 한번의 로그인으로 다양한 서비스에 접근이 가능하다는 말은 역으로 생각해보면 ID와 Password를 해킹 당하면 모든 서비스에 해커가 접근이 가능하다는 점이다.
때문에 구글이나 SSO 방식을 사용하는 서비스들을 추가적인 인증 단계를 거치도록 보안성을 높혔다.
구현 방법
- OAuth 2.0 / OpenID Connect(OIDC)
매우 널리 쓰이는 프로토콜이며, 대부분의 소셜 로그인 구현에 사용된다.
OAuth 2.0은 권한 부여에 초점을 맞추며, OpenID Connect는 OAuth 2.0 위에 구축된 간단한 ID 계층으로 인증에 초점을 맞춘다. - SAML (Security Assertion Markup Language)
SAML은 XML 기반의 데이터 포맷을 사용하여 인증 정보를 교환하는 데 사용되는 표준이다.
기업 환경에서의 SSO 구현에 자주 사용된다. - JWT (JSON Web Tokens)
JWT는 웹 토큰을 위한 개방형 표준이다. 클라이언트와 서버 사이에 안전하게 정보를 전송하기 위해 사용된다. - LDAP (Lightweight Directory Access Protocol)
기업 환경에서 많이 사용되며, 사용자 정보 및 권한을 저장하는 디렉토리 서비스에 대한 쿼리와 수정을 가능하게 한다.
각자의 상황에 맞춰 적절한 방법을 찾아 사용하는 것이 옳다. 이런 프로토콜을 직접 구현하기보다 라이브러리나 서드파티 서비스를 이용해서 SSO를 구현하게 된다. 보안에 관련된 문제들을 대신 처리해주기 때문이다.
끗!
728x90반응형'알아두면 유용한 지식' 카테고리의 다른 글
[지식] Heartbeat / Healthcheck의 차이 (0) 2024.05.21 [지식] Node(노드)의 의미(node.js 아님) (0) 2023.07.18 [IntelliJ] 멀티 모듈 에러: Task 'wrapper' not found in project (2) 2023.06.28 [지식] API Stub(스텁)이란? (0) 2023.06.15 - OAuth 2.0 / OpenID Connect(OIDC)