Reference
- SSO (OAuth / SAML / OIDC)
- 호다닥 공부해보는 SSO와 친구들(SAML / OAtuh / OIDC)
- OAuth(인가), OpenID Connect(인증), SAML(인증&인가)의 특징 및 차이점
- OAuth 2.0 개념 - 그림으로 이해하기 쉽게 설명
- okta - SAML과 OAuth의 특징 및 차이점
- SSO(+ OAuth / SAML / OIDC)
⇒ 추가 참고 필요
- okta - SAML의 정의와 원리
- oauth를 사용한 구글 로그인 인증하기 → 나중에 꼭 참고해보기
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 사용 사례 비교
