킀클둝(Keycloak)을 λ„μž…ν•˜μ—¬ 톡합 인증을 κ΅¬ν˜„ν•˜λŠ” 경우 기본적인 인증과 인가에 λŒ€ν•΄μ„œλŠ” ν•΄κ²°ν•΄μ£Όλ―€λ‘œ νŽΈλ¦¬ν•  것 κ°™μ§€λ§Œ μ‹œμŠ€ν…œμ—μ„œ ν•„μš”λ‘œ ν•˜λŠ” λͺ¨λ“  μš”κ΅¬μ‚¬ν•­μ„ μ»€λ²„ν•΄μ£Όμ§€λŠ” μ•ŠλŠ”λ‹€. 일뢀 μ‹œμŠ€ν…œμ—μ„œ μš”κ΅¬λ˜λŠ” κΈ°λŠ₯을 μ²˜λ¦¬ν•˜κ³ μž ν•˜λŠ” κ²½μš°μ—λŠ” Server Developer Guideλ₯Ό μ°Έκ³ ν•˜μ—¬ μ›ν•˜λŠ” λ™μž‘μ„ μˆ˜ν–‰ν•  수 μžˆλ„λ‘ μ»€μŠ€ν„°λ§ˆμ΄μ§• ν•΄μ•Όν•œλ‹€.

킀클둝 둜그인 ν…Œλ§ˆ

Keycloakifyλ₯Ό 톡해 직접 ν”„λ¦¬λ§ˆμ»€ ν…œν”Œλ¦Ώμ„ μž‘μ„±ν•˜μ§€ μ•Šκ³ μ„œ μ»€μŠ€ν…€ ν…Œλ§ˆλ₯Ό ꡬ성할 수 μžˆλŠ” 것 κ°™μ§€λ§Œ μ•„λ¬΄λž˜λ„ μ‘°μ§μ—μ„œ λ¦¬μ•‘νŠΈλ₯Ό 닀루고 μžˆμ§€ μ•ŠμœΌλ―€λ‘œ 킀클둝 ν…Œλ§ˆλ₯Ό μ»€μŠ€ν„°λ§ˆμ΄μ§•ν•˜λŠ” 것이 κ°€μž₯ κ³΅μˆ˜κ°€ 큰 뢀뢄일 것 κ°™λ‹€.

μ™ΈλΆ€ μ‚¬μš©μž DBλ₯Ό μ—°λ™ν•˜κ³ μž ν•˜λŠ” 경우

일반적으둜 User Federation 을 μœ„ν•΄ μ™ΈλΆ€ μ‚¬μš©μž DBλ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘ User Storage SPI 의 UserStorageProviderλ₯Ό κ΅¬ν˜„ν•΄μ•Όν•œλ‹€. 킀클둝이 κ΄€λ¦¬ν•˜λŠ” μ‚¬μš©μž μ‹λ³„μž 에 λŒ€ν•œ ν˜•μ‹(Storage Ids)에 λŒ€ν•΄μ„œ μ•Œμ•„μ•Όν•  것 κ°™λ‹€.

둜그인 μ‹œ OTP μ½”λ“œλ₯Ό 이메일 λ˜λŠ” SMS 둜 λ°›μœΌλ €λŠ” 경우

ν‚€ν΄λ‘μ—μ„œ μ œκ³΅ν•˜λŠ” Configure OTP의 경우 TOTP Authenticatorλ₯Ό λ“±λ‘ν•˜λŠ” λ°©μ‹μœΌλ‘œ μ§„ν–‰ν•˜κΈ° λ•Œλ¬Έμ— OTP μ½”λ“œλ₯Ό 이메일, SMS λ˜λŠ” 카카였 μ•Œλ¦Όν†‘μœΌλ‘œ 보내기 μœ„ν•΄μ„œλŠ” 이에 λŒ€ν•œ Service Provider Interface λ₯Ό κ΅¬ν˜„ν•΄μ•Όν•œλ‹€.

μ„œλΉ„μŠ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ OTP λ˜λŠ” νŒ¨μŠ€ν‚€ 등둝

ν‚€ν΄λ‘μ˜ μ‚¬μš©μž μ½˜μ†”(Account Console)μ—μ„œ Authenticator λ˜λŠ” Passkeyλ₯Ό λ“±λ‘ν•˜λŠ” 것을 μ„œλΉ„μŠ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ κ΅¬ν˜„ν•˜μ—¬ μˆ˜ν–‰ν•  수 μžˆλŠ”μ§€λŠ” 더 찾아봐야할 것 κ°™λ‹€. λ§Œμ•½, λΆˆκ°€λŠ₯ν•œ 경우 킀클둝 μ‚¬μš©μž μ½˜μ†”μ— λŒ€ν•œ ν…Œλ§ˆλ₯Ό μ»€μŠ€ν„°λ§ˆμ΄μ§• ν•  수 밖에 없을 것 κ°™λ‹€.

μ‚¬μš©μž 인증 μ‹œ μƒˆλ‘œμš΄ λ””λ°”μ΄μŠ€μ— λŒ€ν•œ μ•Œλ¦Όμ„ μ œκ³΅ν•˜λŠ” 경우

Event Listener SPI의 EventListenerProviderλ₯Ό κ΅¬ν˜„ν•˜μ—¬ 둜그인 이벀트λ₯Ό κ°μ§€ν•˜κ³  인증된 λ””λ°”μ΄μŠ€ μ„Έμ…˜ 정보λ₯Ό ν† λŒ€λ‘œ μƒˆλ‘œμš΄ λ””λ°”μ΄μŠ€μ— λŒ€ν•œ μ•Œλ¦Όμ„ κ΅¬ν˜„ν•  수 μžˆλ‹€. 킀클둝 자체적으둜 μ‹ κ·œ λ°œκΈ‰ μ—¬λΆ€λ₯Ό μ œκ³΅ν•΄μ£Όμ§€λŠ” μ•ŠμœΌλ―€λ‘œ λ³„λ„μ˜ μ €μž₯μ†Œμ— λ””λ°”μ΄μŠ€μ— λŒ€ν•œ 정보λ₯Ό μ €μž₯ν•˜κ³  λΉ„κ΅ν•˜λŠ” λ°©μ‹μœΌλ‘œ κ΅¬ν˜„ν•΄μ•Όν•  것 κ°™λ‹€.