메이쁘

[보안] SSO 및 SAML, OAuth 방식에 대해 핵심만 알아보자! 본문

면접 대비 CS지식/Network

[보안] SSO 및 SAML, OAuth 방식에 대해 핵심만 알아보자!

메이쁘 2020. 7. 15. 00:06

안녕하세요.

 

 

최근들어 모든 웹이나 앱을 보시면 

 

첫 로그인 시 Facebook, Naver, Google 로 로그인하기 라는 것을 많이 보셨을 것입니다.

 

 

 

예전에는 하나의 웹 또는 앱 을 이용하려면

 

각각 회원가입하고 그 아이디와 비밀번호를 입력해서 로그인을 했어야 했는데

 

어느새부터 구글 또는 네이버 계정만 있으면 대부분 로그인이 가능합니다. (별도 회원가입이 필요한 경우도 있지만..)

 

 

 

어떻게 이런 것이 가능한지

 

이 것을 뭐라고 말하는지 에 대해 짚고 넘어가는 포스팅입니다.

 

 

 

 

 

SSO 란?


  -  Single Sign-On 의 약자로써, 한 번의 로그인으로 다른 사이트(서비스)들을 인증할 수 있는 것.

 

  -  다른 사이트(또는 앱) 에서 로그인 및 인증 부분만 따로 사용하는 것. (API, 모듈 등)

 

  -  통합 인증, 단일 계정 로그인, 단일 인증 이라고 한다.

 

 

 

ex) 

네이버 메일, 네이버 블로그, 네이버 클라우드 세 개의 서비스가 있다고 하자.

어떤 사람이 네이버 메일을 사용하기 위해 로그인을 한 이후 블로그, 클라우드를 사용하고자 한다면

 

  -> 블로그, 클라우드 이용 시 별도 로그인 없이 이용이 가능하다.

 

 

 

 

SSO (출처 : https://qualifio.com/blog/en/4-reasons-connect-sso-qualifio/)

 

SAML 은?


  -  Security Asserting Markup Language 의 약자(알 필요 없을 듯...) 

 

  -  네트워크를 통해 여러 컴퓨터에서 인증 및 권한 부여(SSO)를 하게 해주는 것.

 

  -  XML 을 사용하며, cross domain(크로스 도메인) 간 SSO 구현이 가능하다.

 

 *** 좀 더 깊게 알고 싶으시면, 하단 사이트를 참고해주세요!

http://www.itworld.co.kr/news/108736

 

SAML에 대해 알아야 할 것

SAML(Security Assertion Markup Language)은 네트워크를 통해 여러 컴퓨터에서 보안 자격 증명을 공유할 수 있도록 하는 공개 표준이다. 한 대의 컴퓨터가 하나 이상의 다른 컴퓨터를 대신해 몇 가지 보안 �

www.itworld.co.kr

 

 

 

 

SAML 을 통한 SSO 인증 방식


  -  위 그림과 같이, 로그인 / 인증 을 위한 SSO 모듈이 중간에 존재한다. (이를 Identify Provider라고 한다.)

 

  -  웹 사이트는 Service Provider 라고 한다.

 

 

 

SSO = IdP / WEBSITE = SP 라고 생각하자.

 

한 번도 로그인하지 않은 경우

 

  1)  사용자가 SP를 사용하기 위해 접근한다.

 

  2)  SP에 해당 사용자의 세션(정보) 이 저장되어있는지 체크한다.

 

  3)  SP에 세션이 저장되어 있지 않아, IdP로 Redirect 한다. (SSO 인증 모듈로 이동)

 

  4)  IdP에도 세션이 저장되어 있지 않아, 로그인(또는 인증) 페이지를 통해 사용자가 로그인하도록 한다. 

 

  5)  로그인에 성공하면, IdP에 해당 사용자의 세션(정보)를 저장한 후 SP로 Redirect 한다. (페이지 이동)

 

  6)  SP 에도 세션을 저장한 후(로그인 성공 전달) 사용자가 SP를 사용할 수 있도록 한다.

 

 

 

 

기존에 한 번 이상 로그인한 경우

 

  1)  사용자가 SP를 사용하기 위해 접근한다.

 

  2)  SP에 해당 사용자의 세션(정보) 이 저장되어있는지 체크한다.

 

  3)  SP에 세션이 저장되어 있지 않아, IdP로 Redirect 한다. (SSO 인증 모듈로 이동)

  ** 3 - 1)  SP에 세션이 저장되어 있는 경우 세션에 맞게 사용자가 SP를 사용할 수 있도록 한다.

 

  4)  IdP에 세션이 저장되어 있어, 해당 세션을 가지고 SP로 Redirect 한다. (페이지 이동)

 

  5)  SP에 IdP에서 가져온 세션을 저장한 후(로그인 성공 전달) 사용자가 SP를 사용할 수 있도록 한다.

 

 

 

OAuth ?!


  -  자신의 앱 또는 웹사이트에서 사용자 인증을 위해 다른 앱 또는 웹사이트의 사용자 인증 방식으로 허락(인가) 받는 프로토콜

 

  -  해당 앱의 ID/PW 로 직접 로그인하는 방식과는 범위의 제약이 존재

 

  -  토큰 인증 방식 사용

 

 

ex)  회사를 예로 들면,

  ->  회사의 직원이 회사 내부에서 출입이 가능한 범위방문증을 받은 사람의 출입 가능 범위보다 더 클 수 밖에 없다.

 

ex2)  실제 웹 사이트에서도

  ->  Facebook, Naver, Google 로 로그인한 사람들보단 직접 회원가입한 아이디로 로그인한 사람들에게 쿠폰, 할인 등 여러 헤택을 더욱 제공한다. 

 

 

 

OAuth 과정

  

Netflix 로그인 화면

 

 

ex)  Netflix 로그인을 예시로 들 경우

 

    1)  Netflix 접속

 

    2)  Facebook으로 로그인 클릭

 

    3)  Facebook 로그인 창 으로 이동

 

    4)  Facebook 로그인 성공

 

    5)  접근 허용(또는 정보 제공) 여부 창 출력

 

    6)  허용 클릭 시 로그인 성공 토큰(Token) 을 Facebook에서 발급

 

    7)  발급받은 토큰을 이용하여 Netflix에서 활용

 

 

 

 

 

 

 

 

더 궁금하신 사항이나 잘못된 부분은 댓글로 지적 부탁드립니다.

 

감사합니다!

Comments