Search

OAuth

OAuth (Open Authorization)

Open : κ°œλ°©ν˜•
Authorization : 인가
개방적으둜 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜(μ„œλ²„) κ°„μ˜ μ‚¬μš©μž 정보에 λŒ€ν•œ μ ‘κ·Ό ν—ˆλ½μ„ ν•˜λŠ” 것
μ‚¬μš©μž 정보에 μ ‘κ·Όν•˜κΈ° μœ„ν•œ κ°œλ°©ν˜• 인증 ν‘œμ€€
β€’
OAuth μŠ€νŽ™ λ¬Έμ„œ
β€’
OAuth ꡬ성 μš”μ†Œ
β—¦
주체
β–ͺ
μ‚¬μš©μž
β–ͺ
μ„œλ²„
β–ͺ
인증 μ„œλ²„
β–ͺ
λ¦¬μ†ŒμŠ€ μ„œλ²„
β—¦
μ£Όμš” 정보
β–ͺ
인가 μ½”λ“œ
β–ͺ
μ•‘μ„ΈμŠ€ 토큰
β–ͺ
μ‚¬μš©μž 정보
β€’
OAuth 인증 κ³Όμ •

OAuth μŠ€νŽ™ λ¬Έμ„œ

이 λ¬Έμ„œλŠ” "OAuth 2.0 인증 ν”„λ ˆμž„μ›Œν¬"λ₯Ό μ •μ˜ν•˜λ©°, ν΄λΌμ΄μ–ΈνŠΈκ°€ μžμ› μ†Œμœ μžμ˜ μžμ›μ— μ ‘κ·Όν•˜λŠ” 방법을 κ·œμ •ν•©λ‹ˆλ‹€. 이 λ¬Έμ„œλŠ” OAuth 2.0 ν”„λ‘œν† μ½œμ˜ 기술적인 μ„ΈλΆ€ 사항을 μ„€λͺ…ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

OAuth ꡬ성 μš”μ†Œ

β€’
주체
β—¦
μ‚¬μš©μž
β—¦
μ„œλ²„
β—¦
인증 μ„œλ²„
β—¦
λ¦¬μ†ŒμŠ€ μ„œλ²„
β€’
μ£Όμš” 정보
β—¦
인가 μ½”λ“œ
β—¦
μ•‘μ„ΈμŠ€ 토큰
β—¦
μ‚¬μš©μž 정보

주체

OAuth ꡬ성 μš”μ†Œμ—λŠ” μ‚¬μš©μž, μ„œλ²„, 인증 μ„œλ²„, λ¦¬μ†ŒμŠ€ μ„œλ²„κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œ μ„œλ²„λŠ” 인증 μ„œλ²„μ— λŒ€ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈκ°€ λ˜λŠ” μ„œλ²„μž…λ‹ˆλ‹€. 일반적으둜 ꡬ글, 페이슀뢁, 카카였, 넀이버가 인증 μ„œλ²„κ°€ 되고 제 3의 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„, 즉 μš°λ¦¬κ°€ κ°œλ°œν•˜λŠ” μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμž…λ‹ˆλ‹€.
이 κΈ€μ—μ„œλŠ” 편의 상 μ‚¬μš©μž, μ„œλ²„, 인증 μ„œλ²„, λ¦¬μ†ŒμŠ€ μ„œλ²„ λΌλŠ” μš©μ–΄λ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€.
(즉, ν΄λΌμ΄μ–ΈνŠΈλ₯Ό κ·Έλƒ₯ μ„œλ²„λΌκ³  λΆ€λ₯΄κ² μŠ΅λ‹ˆλ‹€.)

μ‚¬μš©μž

μžμ›μ˜ 주인. 인증 μ„œλ²„μ— 인증을 λ°›μ•„ μ„œλ²„μ— μ‚¬μš©μž 정보 μ ‘κ·Ό κΆŒν•œμ„ μœ„μž„ν•˜λŠ” 주체
인증 μ„œλ²„μ— λ‘œκ·ΈμΈν•  μ‚¬μš©μžλ₯Ό λ§ν•©λ‹ˆλ‹€.
μ—¬κΈ°μ„œ λ§ν•˜λŠ” μžμ›μ€ 주둜 μ‚¬μš©μž μ •λ³΄λ‘œ, 아이디, λ‹‰λ„€μž„, 이메일, ν”„λ‘œν•„ 사진 등이 μžˆμŠ΅λ‹ˆλ‹€.

μ„œλ²„

μ‚¬μš©μžμ—κ²Œ μ ‘κ·Ό κΆŒν•œμ„ μœ„μž„λ°›μ•„ μ‚¬μš©μž 정보λ₯Ό μ‚¬μš©ν•  주체
μ„œλ²„λŠ” μ‚¬μš©μžκ°€ λ‘œκ·ΈμΈν•˜λ©΄, 인증 μ„œλ²„λ‘œλΆ€ν„° β€œμΈκ°€ μ½”λ“œβ€ λΌλŠ” μœ„μž„μž₯을 λ°›κ³ , 이 μœ„μž„μž₯을 가지고 금고의 열쇠인 β€œμ•‘μ„ΈμŠ€ 토큰”λ₯Ό 인증 μ„œλ²„μ— μš”μ²­ν•©λ‹ˆλ‹€. 그리고 β€œμ•‘μ„ΈμŠ€ ν† ν°β€μ΄λΌλŠ” 이 μ—΄μ‡ λ₯Ό 가지고 μ‚¬μš©μž 정보가 μžˆλŠ” 금고인 λ¦¬μ†ŒμŠ€ μ„œλ²„μ— μ‚¬μš©μž 정보λ₯Ό μš”μ²­ν•˜κ³  μ‘λ‹΅λ°›μŠ΅λ‹ˆλ‹€.

인증 μ„œλ²„

μ‚¬μš©μžκ°€ μš”μ²­ν•œ 인증을 μ²˜λ¦¬ν•˜μ—¬, μ„œλ²„μ—κ²Œ 인가 μ½”λ“œμ™€ 인증 토큰을 λ°œκΈ‰ν•΄μ£ΌλŠ” μ„œλ²„

λ¦¬μ†ŒμŠ€ μ„œλ²„

μ‚¬μš©μž 정보λ₯Ό μ €μž₯ 및 μ œκ³΅ν•˜λŠ” μ„œλ²„
μ‚¬μš©μž 정보가 κ΄€λ¦¬λ˜λŠ” μ„œλ²„λ‘œ, μ„œλ²„κ°€ β€œμΈμ¦ ν† ν°β€μ΄λΌλŠ” μ—΄μ‡ λ‘œ μ‚¬μš©μž λŒ€μ‹  μ‚¬μš©μž 정보λ₯Ό μš”μ²­ν•˜λ©΄, μ„œλ²„μ—κ²Œ μ‚¬μš©μž 정보λ₯Ό μ œκ³΅ν•΄μ£ΌλŠ” μ„œλ²„μž…λ‹ˆλ‹€.

μ£Όμš” 정보

인가 μ½”λ“œ (Authorization Code)

μ‚¬μš©μžκ°€ 인증 μ„œλ²„μ— 인증(둜그인)ν•˜λ©΄, 인증 μ„œλ²„κ°€ μ„œλ²„ν•œν…Œ λ°œκΈ‰ ν•΄μ£ΌλŠ” μœ„μž„μž₯ μ—­ν• μ˜ μ½”λ“œ
β€’
인가 μ½”λ“œλŠ” λ³΄μ•ˆμƒμ˜ 이유둜 μ‚¬μš©μžμ˜ λΈŒλΌμš°μ €λ₯Ό 톡해 μ•ˆμ „ν•˜κ²Œ μ „λ‹¬λ©λ‹ˆλ‹€.
β€’
보톡은 ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‚¬μš©μžλ₯Ό μΈμ¦λ°›κ³ μž ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ‚¬μš©μžκ°€ μ„œλ“œνŒŒν‹° μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λ‘œκ·ΈμΈν•˜κ³  κΆŒν•œμ„ λΆ€μ—¬ν•  λ•Œ, 인가 μ½”λ“œκ°€ μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.
β€’
인가 μ½”λ“œλŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ 인증 μ„œλ²„λ‘œλΆ€ν„° μ•‘μ„ΈμŠ€ 토큰을 μš”μ²­ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.
OAuth 의 λͺ©μ μ€ λ¦¬μ†ŒμŠ€ μ„œλ²„μ— μžˆλŠ” μ‚¬μš©μž 정보λ₯Ό μ„œλ²„(ν΄λΌμ΄μ–ΈνŠΈ)에 κ³΅μœ ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 λ•Œ, μ‚¬μš©μžλŠ” 직접 λ¦¬μ†ŒμŠ€ μ„œλ²„μ— κ°€μ„œ μ‚¬μš©μž 정보λ₯Ό κ°€μ Έμ™€μ„œ μ„œλ²„μ— μ œκ³΅ν•˜μ§€ μ•Šκ³ , μ„œλ²„κ°€ λŒ€μ‹  μ‚¬μš©μž 정보λ₯Ό κ°€μ Έμ˜€λΌκ³  μ‹œν‚΅λ‹ˆλ‹€. 즉, μ‚¬μš©μž 정보λ₯Ό κ°€μ Έμ˜€κΈ° μœ„ν•œ κΆŒν•œμ„ μœ„μž„ν•΄μ€λ‹ˆλ‹€.
μ‚¬μš©μžκ°€ μ„œλ²„μ— μ‚¬μš©μž 정보에 μ ‘κ·Όν•˜κΈ° μœ„ν•œ κΆŒν•œμ„ μœ„μž„ν•΄μ£ΌλŠ” μ ˆμ°¨λŠ”, μ‚¬μš©μžκ°€ 인증 μ„œλ²„μ—μ„œ μ œκ³΅ν•΄μ£ΌλŠ” 둜그인 νŽ˜μ΄μ§€(ꡬ글, 페이슀뢁, 카카였, 넀이버 λ“±)에 λ‘œκ·ΈμΈν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.
μ‚¬μš©μžκ°€ 인증 μ„œλ²„κ°€ μ œκ³΅ν•΄μ€€ 둜그인 νŽ˜μ΄μ§€μ— λ‘œκ·ΈμΈμ„ μ„±κ³΅ν•˜λ©΄, 인증 μ„œλ²„λŠ” μ„œλ²„μ— 인가 μ½”λ“œλ₯Ό λ°œκΈ‰ν•΄μ€λ‹ˆλ‹€. 이 인가 μ½”λ“œλŠ” μ„œλ²„κ°€ μ‚¬μš©μž λŒ€μ‹  증λͺ…μ„œλ₯Ό λ°œκΈ‰ν•  수 μžˆλŠ” μœ„μž„μž₯κ³Ό 같은 역할을 ν•©λ‹ˆλ‹€.
μ΄λ ‡κ²Œ μ‚¬μš©μžλŠ” μžμ‹ μ„ λŒ€μ‹ ν•΄μ„œ μ„œλ²„κ°€ μžμ‹ μ˜ μ‚¬μš©μž 정보λ₯Ό 가지고 μžˆλŠ” 인증 μ„œλ²„μ— μ ‘κ·Όν•˜λŠ” κΆŒν•œμ„ μœ„μž„ν•˜κΈ° μœ„ν•΄ 인증 μ„œλ²„μ— λ‘œκ·ΈμΈν•˜μ—¬, 인증 μ„œλ²„λ‘œ ν•˜μ—¬κΈˆ μ„œλ²„μ—κ²Œ 인가 μ½”λ“œλ₯Ό λ°œκΈ‰ν•΄μ€„ 수 있게 μΈμ¦ν•©λ‹ˆλ‹€.
1.
μ„œλ²„μ˜ μ†Œμ…œ 둜그인 λ²„νŠΌ 클릭
2.
μ„œλ²„κ°€ 인증 μ„œλ²„μ— 인가 μ½”λ“œ μš”μ²­
3.
μ‚¬μš©μžκ°€ 둜그인 νŽ˜μ΄μ§€μ— 둜그인
4.
인증 μ„œλ²„κ°€ 인가 μ½”λ“œλ₯Ό μ„œλ²„μ— λ°œκΈ‰
이 μ ˆμ°¨λŠ” 마치, λΆ€λͺ¨λ‹˜ λŒ€μ‹  λ‚΄κ°€ ν–‰μ • 볡지 센터에 κ°€μ„œ 인감 증λͺ…μ„œλ₯Ό λ°œκΈ‰ν•˜κΈ° μœ„ν•œ μœ„μž„μž₯을 μ“°λŠ” 일과 λΉ„μŠ·ν•©λ‹ˆλ‹€.
1.
λΆ€λͺ¨λ‹˜ : β€œμ„œμ•„μ•Ό, ν–‰μ • 볡지 센터에 κ°€μ„œ μœ„μž„μž₯ 양식 λ°›μ•„μ˜€λ ΄~!”
2.
λ‚˜(μ„œμ•„) : β€œμ„ μƒλ‹˜, μœ„μž„μž₯ 양식 μ’€ μ£Όμ„Έμš”~!”
3.
곡무원 : β€œμž μ—¬κΈ°μžˆμŠ΅λ‹ˆλ‹€. μœ„μž„μž₯ μž‘μ„±, 본인 신뢄증, λŒ€λ¦¬μΈ 신뢄증 κ°€μ Έμ˜€μ„Έμš”~!”
4.
이제 μœ„μž„μž₯을 가지고 λΆ€λͺ¨λ‹˜μ„ λŒ€μ‹ ν•΄μ„œ 인감 증λͺ…μ„œλ₯Ό λ°œκΈ‰ν•  수 있게 λ˜μ—ˆμ–΄μš”.

μ•‘μ„ΈμŠ€ 토큰(Access Token)

μ‚¬μš©μž 정보가 μžˆλŠ” λ¦¬μ†ŒμŠ€ μ„œλ²„μ˜ μ ‘κ·Όν•˜κΈ° μœ„ν•œ μ—΄μ‡ 
β€’
μ•‘μ„ΈμŠ€ 토큰은 ν΄λΌμ΄μ–ΈνŠΈκ°€ λ¦¬μ†ŒμŠ€ μ„œλ²„μ— μ ‘κ·Όν•  수 μžˆλ„λ‘ κΆŒν•œμ„ 뢀여받은 후에 μ‚¬μš©λ©λ‹ˆλ‹€.
β€’
인가 μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 인증 μ„œλ²„λ‘œλΆ€ν„° κ΅ν™˜λ˜κ±°λ‚˜, ν΄λΌμ΄μ–ΈνŠΈ 자격 증λͺ…을 직접 μ‚¬μš©ν•˜μ—¬ 받을 수 μžˆμŠ΅λ‹ˆλ‹€.
β€’
이 토큰은 ν΄λΌμ΄μ–ΈνŠΈκ°€ νŠΉμ • λ¦¬μ†ŒμŠ€μ— μ•‘μ„ΈμŠ€ν•  λ•Œ λ¦¬μ†ŒμŠ€ μ„œλ²„μ— μ œκ³΅λ©λ‹ˆλ‹€.
μ„œλ²„λŠ” μ‚¬μš©μžμ—κ²Œ κΆŒν•œμ„ μœ„μž„ 받은 것을 증λͺ…ν•˜λŠ” 인가 μ½”λ“œλ₯Ό 가지고 인증 μ„œλ²„μ— μ•‘μ„ΈμŠ€ 토큰을 μš”μ²­ν•©λ‹ˆλ‹€. 이 λ•Œ API KEY, redirect uri, client secret λ“±μ˜ 정보도 ν¬ν•¨ν•˜μ—¬ μš”μ²­ν•©λ‹ˆλ‹€.
인증 μ„œλ²„λŠ” μ„œλ²„κ°€ 보낸 μš”μ²­ μ •λ³΄μ—μ„œ 인가 μ½”λ“œμ™€ μ—¬λŸ¬ 정보듀을 ν™•μΈν•˜μ—¬ 인증을 ν•˜κ³  μ•‘μ„ΈμŠ€ 토큰을 λ°œκΈ‰ν•©λ‹ˆλ‹€. μ„œλ²„κ°€ μ•‘μ„ΈμŠ€ 토큰을 λ°œκΈ‰ λ°›μœΌλ©΄ 이제 μ„œλ²„λŠ” λ¦¬μ†ŒμŠ€ μ„œλ²„λ‘œ μ‚¬μš©μž 정보λ₯Ό μš”μ²­ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
1.
μ„œλ²„κ°€ 인증 μ„œλ²„μ— μ•‘μ„ΈμŠ€ 토큰 μš”μ²­
2.
인증 μ„œλ²„κ°€ μ„œλ²„μ— μ•‘μ„ΈμŠ€ 토큰 λ°œκΈ‰
이 과정은 마치, λΆ€λͺ¨λ‹˜μ΄ 써쀀 μœ„μž„μž₯κ³Ό λ‚˜μ˜ 신뢄증, λΆ€λͺ¨λ‹˜ 신뢄증을 가지고 ν–‰μ • 볡지 센터에 κ°€μ„œ λΆ€λͺ¨λ‹˜μ˜ 인감 증λͺ…μ„œλ₯Ό λŒ€λ¦¬ λ°œκΈ‰ ν•˜λŠ” κ³Όμ •κ³Ό λΉ„μŠ·ν•©λ‹ˆλ‹€.

μ‚¬μš©μž 정보

λ¦¬μ†ŒμŠ€ μ„œλ²„μ— μ €μž₯된 λ‹‰λ„€μž„, ν”„λ‘œν•„ 사진, 이메일 λ“±μ˜ μ‚¬μš©μž 정보
μ‚¬μš©μžμ˜ ν”„λ‘œν•„, 이미지, λ¬Έμ„œ, λ˜λŠ” 기타 κ΄€λ ¨ 데이터λ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€. 이 μ •λ³΄λŠ” μ‚¬μš©μžμ˜ 계정에 μ—°κ²°λ˜μ–΄ 있으며, ν•΄λ‹Ή μ‚¬μš©μžμ˜ κΆŒν•œμ— 따라 λ‹€μ–‘ν•œ ν˜•νƒœλ‘œ μ €μž₯될 수 μžˆμŠ΅λ‹ˆλ‹€.
λ¦¬μ†ŒμŠ€ μ„œλ²„λŠ” μ΄λŸ¬ν•œ μ‚¬μš©μž 정보λ₯Ό μ•ˆμ „ν•˜κ²Œ λ³΄ν˜Έν•˜κ³ , μΈκ°€λœ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œλ§Œ μ•‘μ„ΈμŠ€λ₯Ό ν—ˆμš©ν•˜μ—¬ μ‚¬μš©μžμ˜ κ°œμΈμ •λ³΄λ₯Ό λ³΄ν˜Έν•©λ‹ˆλ‹€. 일반적으둜 OAuth 2.0κ³Ό 같은 ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈκ°€ 인가λ₯Ό λ°›κ³ , κΆŒν•œμ„ 뢀여받은 ν›„μ—λ§Œ λ¦¬μ†ŒμŠ€ μ„œλ²„μ— μ•‘μ„ΈμŠ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μ„œλ²„λŠ” 인증 μ„œλ²„λ‘œλΆ€ν„° λ°œκΈ‰ 받은 μ•‘μ„ΈμŠ€ ν† ν°μœΌλ‘œ μ‚¬μš©μžλ‘œλΆ€ν„° μœ„μž„λœ μžκ²©μ„ 증λͺ…을 λ°›κ³ , λ¦¬μ†ŒμŠ€ μ„œλ²„μ— μ‚¬μš©μž 정보λ₯Ό μš”μ²­ν•©λ‹ˆλ‹€. 그러면 λ¦¬μ†ŒμŠ€ μ„œλ²„λŠ” μ‚¬μš©μž 정보λ₯Ό μ„œλ²„μ— μ‘λ‹΅ν•©λ‹ˆλ‹€.
λ§ˆμΉ¨λ‚΄ μ„œλ²„λŠ” μ‚¬μš©μžλ₯Ό λŒ€μ‹ ν•˜μ—¬ μ‚¬μš©μž 정보λ₯Ό κ°€μ Έμ™”μŠ΅λ‹ˆλ‹€.
이제 μ‚¬μš©μž 정보λ₯Ό μ–»μ—ˆμœΌλ‹ˆ μ„œλ²„λŠ” β€œκ΅¬κΈ€λ‘œ νšŒμ›κ°€μž…β€, β€œμΉ΄μΉ΄μ˜€λ‘œ νšŒμ›κ°€μž…β€ κ³Ό 같은 κΈ°λŠ₯을 κ΅¬ν˜„ν•˜μ—¬, μ‚¬μš©μžκ°€ μ†Œμ…œ λ‘œκ·ΈμΈμ„ 톡해 μ΅œμ΄ˆμ—λŠ” μžλ™μœΌλ‘œ νšŒμ› κ°€μž…μ„ ν•˜κ³  μ΄ν›„μ—λŠ” μ†Œμ…œ 둜그인으둜 λ°”λ‘œ λ‘œκ·ΈμΈμ„ ν•  수 있게 지원할 수 μžˆμŠ΅λ‹ˆλ‹€.
이 과정은 마치, 인감 증λͺ…μ„œλ‘œ ?????

OAuth 인증 κ³Όμ •

OAuth 인증 과정은 일반적으둜 μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.
1.
μ‚¬μš©μžκ°€ μ„œλ²„μ˜ μ†Œμ…œ 둜그인 λ²„νŠΌ 클릭
2.
μ„œλ²„κ°€ 인증 μ„œλ²„μ— 인가 μ½”λ“œ μš”μ²­
3.
μ‚¬μš©μžκ°€ 둜그인 νŽ˜μ΄μ§€μ— 둜그인
4.
인증 μ„œλ²„κ°€ 인가 μ½”λ“œλ₯Ό μ„œλ²„μ— λ°œκΈ‰
5.
μ„œλ²„κ°€ 인증 μ„œλ²„μ— μ•‘μ„ΈμŠ€ 토큰 μš”μ²­
6.
인증 μ„œλ²„κ°€ μ„œλ²„μ— μ•‘μ„ΈμŠ€ 토큰 λ°œκΈ‰
7.
μ„œλ²„κ°€ λ¦¬μ†ŒμŠ€ μ„œλ²„μ— μ‚¬μš©μž 정보 μš”μ²­
8.
λ¦¬μ†ŒμŠ€ μ„œλ²„κ°€ μ„œλ²„μ— μ‚¬μš©μž 정보 응닡

μ†Œμ…œ 둜그인