← Notes

OAuth, OIDC, SAML

security
2분 읽기

OAuth, OIDC, SAML

OAuth

"이 앱이 내 정보 써도 돼?" 허락을 받는 규칙

  • 로그인이 아님, 정보 접근 허락만
  • 예: 카카오 정보 제공 동의

OIDC

OAuth + "이 사람이 누구인지" 확인 → 로그인

  • OAuth 위에 신원 확인 기능을 얹은 것
  • "카카오로 로그인"이 실제로는 OIDC
  • 가볍고 현대적, JSON 기반

SAML

기업 내부 시스템용 인증 프로토콜

  • XML 기반이라 무겁고 복잡
  • 레거시 시스템 연동에 많이 씀
  • 지금 프로젝트는 OIDC 사용 중

Keycloak OIDC 로그인 흐름 (Authorization Code Flow)

  1. 브라우저 → Keycloak "로그인할게"
  2. Keycloak → 브라우저 "로그인 됐어, 여기 code" (URL 콜백)
  3. 브라우저 → 서버 "나 이 code 받았어"
  4. 서버 → Keycloak "이 code로 토큰 줘"
  5. Keycloak → 서버 "여기 JWT 토큰"
  6. 서버 → 브라우저 "로그인 완료"

프로비저닝

SSO 로그인 후 해당 서비스에 유저가 없을 때 자동으로 계정을 만들어주는 것

흐름:

  1. SSO 로그인 → sid 발급
  2. Roundcube 같은 서비스 접속
  3. 해당 유저 있나 확인
  4. 없으면 → sid로 Keycloak에서 유저 정보 가져와서 자동 계정 생성
  5. 있으면 → 그냥 로그인

왜 토큰을 바로 안 주고 code를 먼저 주나

  • 콜백이 브라우저 URL로 오는데 URL은 누구나 볼 수 있음
  • 토큰을 URL에 직접 주면 노출 위험
  • code는 임시 교환권, 서버가 code로 Keycloak한테 직접 토큰 요청
  • 토큰은 서버 ↔ Keycloak 사이에서만 교환 (브라우저 안 거침)

Related Notes

3개

sunshinemoon · 2026