2 minute read

기획 μ‹œλ¦¬μ¦ˆ: Web Authentication

  1. Cookie & Session & JWT
  2. OAuth
  3. OpenID Connect(OIDC)
  4. SSO πŸ‘ˆ
  5. SAML

이 글은 SSOλ₯Ό κ³΅λΆ€ν•˜λ©΄μ„œ 개인적으둜 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. 지적과 쑰언은 μ–Έμ œλ‚˜ ν™˜μ˜μž…λ‹ˆλ‹€ γ…Žγ…Ž


SSO(Single Sign-On)은 ν•œλ²ˆμ˜ 둜그인으둜 μ—¬λŸ¬ μ‚¬μ΄νŠΈμ— λŒ€ν•œ 인증을 ν•œλ²ˆμ— μˆ˜ν–‰ν•˜μ—¬ λ‹€λ₯Έ μ‚¬μ΄νŠΈλ“€μ„ μ΄μš©ν•  λ•Œ 좔가적인 둜그인 없이 μ‚¬μš©ν•  수 μžˆλŠ” 방법을 λ§ν•œλ‹€.

SSO의 λŒ€ν‘œμ μΈ μ‚¬λ‘€λŠ” Google 둜그인으둜 ν•œλ²ˆμ˜ 둜그인으둜, Gmail, YouTube, Google Calendar λ“±μ˜ μ„œλΉ„μŠ€λ₯Ό 둜그인 없이 λ°”λ‘œ μ‚¬μš©ν•  수 μžˆλ‹€! 😁

보톡 β€œν†΅ν•© 인증”을 SSO라고 이λ₯΄λ©°, ν•˜λ‚˜μ˜ μ‹œμŠ€ν…œμ—μ„œ 톡합 인증으둜 λ‘œκ·ΈμΈμ„ ν–ˆλ‹€λ©΄, λ‹€λ₯Έ μ‹œμŠ€ν…œμ„ μ΄μš©ν•  λ•Œ 인증 정보 유무λ₯Ό 확인해 있으면 κ·Έκ²ƒμœΌλ‘œ λ‘œκ·ΈμΈμ„ μ²˜λ¦¬ν•˜κ³ , μ—†λ‹€λ©΄ λ‹€μ‹œ 톡합 인증으둜 둜그인 ν•˜λ„λ‘ μš΄μ˜λœλ‹€.


μž₯점.

  • μ‚¬μš©μž 이름과 μ•”ν˜Έμ˜ λ‚œλ¦½μ„ μ°¨λ‹¨ν•¨μœΌλ‘œμ¨ μ‚¬μš©μž κ²½ν—˜(UX) κ°œμ„ 
  • μ‚¬μš©ν•˜λŠ” 이름과 μ•”ν˜Έμ˜ 수λ₯Ό 쀄여 μ•”ν˜Έ μœ„μƒ μƒνƒœλ₯Ό κ°œμ„ ν•˜μ—¬ λ³΄μ•ˆμ„±μ„ ν–₯μƒμ‹œν‚¨λ‹€.
    (즉, μ‰¬μš΄ μ•”ν˜Έλ₯Ό μ—¬λŸ¬ κ³³μ—μ„œ μ‚¬μš©ν•˜λŠ” 것이 μ•„λ‹ˆλΌ SSO둜 ν•˜λ‚˜μ˜ λ‘œκ·ΈμΈμ„ μ‚¬μš©ν•˜λ˜ κ·Έ SSO의 μ•”ν˜ΈλŠ” λ³΅μž‘ν•œ 것을 μ‚¬μš©ν•œλ‹€λŠ” 말이닀!)
  • ν™•μž₯μ„±
  • 인증에 λŒ€ν•œ 뢀뢄을 μ€‘μ•™μ—μ„œ κ΄€λ¦¬ν•¨μœΌλ‘œμ¨, 인적 μžμ›μ„ μ ˆμ•½

SSOλŠ” 크게 두 κ°€μ§€ λͺ¨λΈλ‘œ λ‚˜λˆ„μ–΄ μ§„λ‹€.

1. Delegation Model; 인증 λŒ€ν–‰ λͺ¨λΈ

Image from here

각 κ°œλ³„ μ„œλΉ„μŠ€μ˜ 인증을 톡합 인증을 톡해 μ ‘κ·Ό. 본인이 μž¬ν•™ 쀑인 POSTECH SSOκ°€ μœ„μ™€ 같은 λ°©μ‹μœΌλ‘œ λ™μž‘ν•œλ‹€.


2. Propagation Model; 인증 정보 전달 λͺ¨λΈ

Image from here

SSO 톡합 인증에 둜그인 ν–ˆμ„ λ•Œ, β€œμΈμ¦ 토큰”을 λ°œκΈ‰ λ°›μŒ. β€œμΈμ¦ ν† ν°β€μœΌλ‘œ κ°œλ³„ μ„œλΉ„μŠ€μ—μ„œ 인증을 μˆ˜ν–‰ν•¨. Google 둜그인이 이것에 해당함.

λ§Œμ•½ Cookie둜 인증 토큰을 κ΅¬ν˜„ν•œλ‹€λ©΄, μ•„λž˜μ˜ 쑰건을 μΆ©μ‘±ν•΄μ•Ό ν•œλ‹€.

  • Data Confidentiality; 데이터 κΈ°λ°€ μœ μ§€: 토큰은 μ μ ˆν•œ μ•”ν˜Έ μ•Œκ³ λ¦¬μ¦˜μ„ μ•”ν˜Έν™” λ˜μ–΄μ•Ό ν•œλ‹€.
  • Data Integrity; 데이터 무결성: 토큰은 MAC(λ©”μ‹œμ§€ 인증 μ½”λ“œ) 등을 포함해 λ°μ΄ν„°μ˜ 무결성을 보μž₯ν•΄μ•Ό ν•œλ‹€.
  • 토큰에 μ ‘κ·Όν•  수 μžˆλŠ” μ£Όμ†Œλ₯Ό μ œν•œν•˜κ±°λ‚˜ 유효 μ‹œκ°„μ„ μ„€μ •ν•΄μ•Ό ν•œλ‹€.

참고자료