ν”Όλ“œλ‘œ λŒμ•„κ°€κΈ°
Stop Storing Passwords: Build Enterprise SSO in Laravel πŸ›‘οΈ
Dev.toDev.to
Security

Passwordless SSO λ„μž…μ„ ν†΅ν•œ Credential Stuffing μ›μ²œ 차단 및 λ³΄μ•ˆ μ±…μž„ μ „κ°€

Stop Storing Passwords: Build Enterprise SSO in Laravel πŸ›‘οΈ

Prajapati Paresh2026λ…„ 5μ›” 21일2λΆ„intermediate

Context

자체 Password μ €μž₯ 방식에 λ”°λ₯Έ Credential Stuffing 곡격 λ…ΈμΆœ 및 λ³΄μ•ˆ μ±…μž„ μ¦κ°€λΌλŠ” μ•„ν‚€ν…μ²˜μ  Liability λ°œμƒ. μ‚¬μš©μž λΉ„λ°€λ²ˆν˜Έ μž¬μ‚¬μš© νŒ¨ν„΄μœΌλ‘œ 인해 μ™ΈλΆ€ 유좜 사고가 μ„œλΉ„μŠ€ λ³΄μ•ˆ μœ„ν˜‘μœΌλ‘œ μ§κ²°λ˜λŠ” ꡬ쑰적 ν•œκ³„ 직면.

Technical Solution

  • OAuth2 ν”„λ‘œν† μ½œ 기반의 Identity Provider(IdP) μœ„μž„μ„ ν†΅ν•œ 인증 μ±…μž„ μ „κ°€ 섀계
  • Laravel Socialiteλ₯Ό ν™œμš©ν•œ OAuth2 Handshake(Redirect, State Verification, Token Exchange) 좔상화 및 κ΅¬ν˜„
  • User Table λ‚΄ password 컬럼의 Nullable λ³€κ²½ 및 provider_id λ„μž…μ„ ν†΅ν•œ 닀쀑 인증 체계 ꡬ좕
  • updateOrCreate λ‘œμ§μ„ ν†΅ν•œ Email 기반 μ‚¬μš©μž 식별 및 SSO ν”„λ‘œν•„ 동기화 μžλ™ν™”
  • μ„Έμ…˜ κ³ μ • 곡격 λ°©μ§€λ₯Ό μœ„ν•œ Auth::login ν›„ session()->regenerate() κ°•μ œ μˆ˜ν–‰

1. μ™ΈλΆ€ IdP 연동 μ‹œ password 컬럼의 Nullable μ„€μ • 및 unique(email) μ œμ•½ 쑰건 확인

2. OAuth2 콜백 처리 ν›„ λ°˜λ“œμ‹œ μ„Έμ…˜ μž¬μƒμ„±μ„ 톡해 Session Fixation 곡격 λ°©μ–΄

3. μ‚¬μš©μž μ‹λ³„μžλ‘œ provider_id와 email을 병행 μ‚¬μš©ν•˜μ—¬ 계정 쀑볡 생성 λ°©μ§€

원문 읽기