프로그래밍/Etc

SSO 란?

가라멜 2021. 2. 5. 13:52
반응형

SSO 란?

  • Single Sign-On
  • 한번의 로그인으로 다른 여러 사이트들을 접속하여 이용하는 것
  • 단일 계정 로그인, 단일 인증, 싱글 사인온, 통합인증 등으로 불림

<장점>

  • 사이트 및 서버 별로 다른 아이디 및 조합 등 로그인 피로 감소(사용자 편의성 증가)
  • 각 서비스 별로 암호가 달라 암호를 다시 답해줘야 하는 헬프데스크 비용 감소

<단점>

  • 구축 비용 발생 및 시스템 복잡도 증가

<절차>

  1. 클라이언트가 서버에 연결 요청
  2. 서버는 클라이언트로 하여금 SSO 서버로부터 인증을 받은 후 접속 요청
  3. 클라이언트가 SSO 서버로부터 인증을 받음
  4. SSO 서버와 연결된 서버(1,2,3 등)에도 별도의 인증 과정 없이 접속 가능

<인증방식>
일반적으로 두가지의 방식으로 나뉜다.
에이전트가 대행해주는 Delegation 방식과,
사용자가 인증한 사실을 전달받아 SSO를 구현하는 Propagation 방식.

  1. Delegation(인증대행, 위임)
  • 대상 애플리케이션의 인증 방식을 변경하기 어려울 때 사용
  • 애플리케이션의 인증 정보를 에이전트가 관리해 사용자 대신 로그온 해주는 방식
  1. Propagation(인증정보 전달, 전파)
  • 통합 인증을 수행하는 고셍서 인증은 받아 대상 애플리케이션으로 전달한 토큰을 발급
  • 애플리케이션에 사용자가 접근할 때 토큰을 같이 전달해 애플리케이션이 사용자를 확인(인증) 한다.
  • 웹에서는 주로 쿠키(Cookie)를 이용해 토큰을 전달하고, 웹기반 시스템에서는 주로 이 방식을 사용
  1. Delegation & Propagation(혼합 방식)
  • Delegation과 Propagation 중 어느 하나의 방식으로만 불가능 할 때 사용
  • 여러 애플리케이션의 특성이 다양해 어느 한가지 방식으로 불가능 할때 각 애플리케이션마다 방식을 달리 하는 방향으로 진행

<Cookie 사용 시 보안방안>
Cookie를 사용해서 토큰을 전달하게 되면 이 정보가 외부에 노출 되게 된다. 따라서 이러한 정보의 보안을 위해 보안 기술이 사용된다.

  • Data Confidentiality : 데이터 기밀유지, 주요 암호 알고리즘(AES 등)과 128bit 이상의 키로 암호화 되어야 한다.
  • Data Integrity : 데이터 무결성, 토큰은 MAC 등을 포함해 데이터의 무결성을 보장해야 한다.
  • Replay Attack Protection : 노출된 토큰을 이용해 다른 사용자가 인증을 받아 접근하는 것을 방지해야 한다.
    • 사용자 주소 제한 : 토큰이 발행 될 때 접속한 사용자의 주소 정보를 토큰 내부나 발행 서버에서 저장해 놓고 접속한곳 이외에서 접속을 제한한다.
    • 유효시간 제한 : 토큰의 유효시간을 매우 짧게 줌으로써 비인증 사용자 접근을 방지한다. 기존에 사용중인 사용자의 유효시간이 지나면, 자동으로 토큰을 재발행한다.

<구현 기법>

  1. Client-Based(클라이언트 기반) : 해당 PC에서 자체 시스템에 ID와 비밀번호를 기억시키고 PC에서 자동으로 입력하게 하는 방법. 평소의 작업 PC가 아닌 경우 로그인하는데 번거로워짐
  2. Server-Based(서버 기반) : 중앙 서버에서 각기 다른 비밀번호를 관리 할 수 있는 형태. 사용자의 모든 활동이 서버를 통해 이루어지기 때문에 서버의 가용성과 안정성이 중요
  3. Service-Based(서비스 기반) : 비밀번호를 하나의 서비스로 제공할 수도 있는 형태 ex)마이크로 소프트의 passport

<출처 및 참고 >
https://wiki.wikisecurity.net/wiki:sso
https://ko.wikipedia.org/wiki/%ED%86%B5%ED%95%A9_%EC%9D%B8%EC%A6%9D
https://mercurii.tistory.com/227
http://www.rcy.co.kr/xeb/study/170
http://itwiki.kr/w/SSO

반응형

'프로그래밍 > Etc' 카테고리의 다른 글

HiperVisor 란?  (0) 2021.02.08
OAuth 란?  (0) 2021.02.06
[Seminar]매일 15분 전공 스터디 3기 후기  (0) 2019.04.04
[Seminar]Project 100..  (0) 2019.03.18
[Seminar]매일 15분 전공 스터디 2기 후기  (0) 2018.10.02