SSO / SAML / OAuth 2.0 / OIDC

IRISH·2024년 12월 20일
0

Security

목록 보기
2/3
post-thumbnail

Reference

⇒ 추가 참고 필요

SSO

SAML / OAuth 2.0 / OIDC

→ SAML : Security Assertion Markup Language

→ OAuth : Open Authorization

→ OIDC : OpenID Connect

  • OAuth는 인증이 아닌, 인가를 위해 설계된 프로토콜
    • 그러나… OAuth로도 인증을 하는 것이 불가능한 것은 아니기 때문에, “Pseudo-authintication”라는 것임
    • Pseudo-authintication에서는 Refresh Token이나 Assertion을 통해 사용자가 인증하지 않아도 Access Token을 발급 → 이걸 인증으로 간주
      • 하지만, 이런 부분 때문에 보안 위협 존재
    • OIDC에서는 인증을 위한 id_token 토큰을 따로 두어 위의 위협들을 해소
  • access token → Bearer 토큰 형식 / ID token → JWT 형식

SAML 워크플로우

  • SAML에서 ID 공급자(IdP)는 사용자의 자격 증명을 확인한 다음 서비스 공급자(SP)에게 SAML 어설션을 보낸다.
    • 이 어설션에는 사용자 ID와 관련된 인증 문 및 속성이 포함되어 있다.
  • 그런 다음 서비스 공급자는 이 어설션을 기반으로 액세스 권한을 부여한다.

OAuth의 워크플로우(+ 인증 서버 / 리소스 서버)

  • OAuth는 리소스 소유자(사용자)의 승인을 받아 승인 서버에서 타사 애플리케이션에 토큰을 발급하는 방식으로 작동
  • 이 토큰은 정의된 기간 동안 특정 리소스 세트에 대한 액세스 권한을 부여

→ 리소스 서버 구분

→ 토큰 흐름 정리

→ Google과 서비스의 역할 정리

  • 서비스가 Notion이라고 가정 / Notion의 로그인을 Google로 했다고 가정

OIDC 워크플로우

  • OpenID Connect는 사용자에 대한 정보가 포함된 JWT(JSON 웹 토큰)인 ID 토큰으로 OAuth 2.0을 확장
  • 사용자를 인증한 후 ID 공급자는 ID 토큰과 액세스 토큰(승인된 경우)을 발급
  • 그런 다음 클라이언트는 ID 토큰을 사용하여 사용자 정보를 얻고 액세스 토큰을 사용하여 승인된 리소스에 액세스

SAML과 OAuth 요약

  • SAML
    • 사용자 인증 프로세스 담당
    • SAML은 집 열쇠라고 생각하면 됨! → 집에 대한 접근 허용
  • OAuth
    • 권한 인증 프로세스 담당
    • OAuth는 집 안에서 할 수 있는 일 및 할 수 없는 일 구분!

OAuth vs SAML vs OIDC

  • SAML
    • 인증 ㅇ / 인가 ㅇ
    • 엔터프라이즈급 SSO에 주로 사용
  • OAuth
    • 인증 x / 인가 ㅇ
    • 사용자를 대신하여 작업할 수 있는 권한을 애플리케이션에 부여
  • OIDC
    • 인증 o / 인가 o
    • OAuth 2.0을 기반으로 구축

Google SSO 사용 사례 비교

profile
#Software Engineer #IRISH

0개의 댓글