SAML(Security Assertion Markup Language)기반 SSO(Single Sing-On)에 대한 이해
SAML(Security Assertion Markup Language)이란 무엇일까요?
사용자 인증 및 승인 데이터를 교환하는 안전한 웹 도메인을 제공하는 XML 표준이라고 할 수 있습니다.
SAML에는 두 가지 주요 보안 기능이 있습니다.
- 인증: 사용자가 본인인지 확인
- 권한 부여: 특정 시스템 또는 콘텐츠에 액세스하기 위한 앱에 사용자 권한 전달
SAML(Security Assertion Markup Language)은 어디에 쓰이는 걸까요?
SAML을 사용하면 SAML 프로토콜 및 서비스를 지원하는 하나 이상의 애플리케이션에서 사용자들에게 SSO(Single Sign-On)를 제공할 수 있어, SSO를 통해 하나 이상의 애플리케이션을 대신하여 여러 보안 기능을 수행할 수 있습니다. SSO는 웹 애플리케이션에만 적용됩니다.
그럼 SSO(Single Sign-On)란 무엇일까요?
SSO는 한 번의 로그인으로 여러개의 다른 도메인을 이용하려고 할때 필요한 기술입니다. 쉽게 말해 여러 서비스를 로그인 한 번으로 이용하도록 하는 기술입니다. 이 방식은 각 어플리케이션에서 로그인/인증 부분만 떼어서 한군데로 모아둡니다. 현재 Google에서는 SAML 기반 싱글 사인온(SSO) 서비스를 제공하여 파트너 회사가 Gmail 또는 Google 캘린더와 같은 웹 기반 애플리케이션에 액세스할 수 있는 호스팅된 사용자 계정의 승인 및 인증을 자유롭게 관리하고 있습니다.
SSO(Single Sign-On)는 왜 필요한가요?
MSA로 된 프로젝트가 있다고 해보겠습니다. 우선 세 개의 인스턴스 서버가 있다고 가정해보겠습니다.
세 개의 서버는 위의 사진처럼 각자의 방식으로 로그인을 요구합니다. 각 인스턴스 서버마다 로그인을 처리하는 방식, 용자 정보를 저장하는 방식 또한 다를 수가 있습니다. 서비스를 만드는 입장에서는 프로세스 마다 각각 로그인 관련된 프로세스를 구현해야 하게되는 불편이 생깁니다.
따라서 위의 그림과 같이 중간에 Idp 서비스를 하나 두고 Idp 서비스에서 인증가 관련된 부분을 통합합니다. Idp(Identity Proveider)는 각 인스턴스 서버들의 인증 관련 부분만 모아서 구현해 놓은 서비스입니다.
SAML의 SSO는 언제 사용하는 것이 좋을까요?
- 사용 사례에 SSO가 포함된 경우(최소한 한 명의 행위자 또는 참가자가 기업인 경우) SAML을 사용합니다.
- 사용 사례에 리소스(예: 계정, 사진, 파일 등)에 대한 액세스(일시적 또는 영구적) 제공이 포함되는 경우 OAuth를 사용합니다.
- 포털에 대한 파트너 또는 고객 애플리케이션에 대한 액세스를 제공해야 하는 경우 SAML을 사용하십시오.
- 사용 사례에 중앙 집중식 ID 소스가 필요한 경우 SAML(Identity provider)을 사용하십시오.
- 사용 사례에 모바일 장치가 포함된 경우 일부 형식의 Bearer 토큰이 포함된 OAuth2가 적합합니다.
SAML의 SSO와 jwt의 차이는무엇일까요?
saml의 sso는 한번 로그인 하면 여러 도메인에서 더 이상의 로그인 없이 이용할 수 있는 것을 말하는 반면,
jwt는 헤더, 페이로드 및 서명 구조와 같은 사용자 정보를 전달하는 데에 기초를 두고 사용자 인증을 위해 다른 웹사이트의 사용자 인증 방식으로 허락(인가) 받는 프로토콜이라고 할 수 있습니다.
SAML과 JWT를 함께 사용할 수 있을까요?
인증에 SAML을 사용할 수 있습니다. SAML 토큰/어설션이 있으면 이를 HTTP 전달자 헤더에서 JWT로 사용하여 보호된 리소스에 액세스할 수 있습니다