티스토리 뷰

들어가기 앞서

다음은 GDSC 백엔드 직렬 1팀에서 진행하는 Spring Boot Study 중 "이상민(23)"이 작성한 포스팅입니다. 공식 문서 및 다양한 참고자료를 바탕으로 해당 글을 작성했습니다. 참고 자료 주소는 본문 하단에 명시되어 있습니다.

 

OAuth의 사용과 의미

OAuth is an open-standard authorization protocol or framework that provides applications the ability for “secure designated access.” For example, you can tell Facebook that it’s OK for ESPN.com to access your profile or post updates to your timeline without having to give ESPN your Facebook password. This minimizes risk in a major way: In the event ESPN suffers a breach, your Facebook password remains safe.
OAuth doesn’t share password data but instead uses authorization tokens to prove an identity between consumers and service providers. OAuth is an authentication protocol that allows you to approve one application interacting with another on your behalf without giving away your password.

OAuth는 응용 프로그램에 "지정된 안전한 액세스" 기능을 제공하는 개방형 표준 인증 프로토콜 또는 프레임워크입니다. 예를 들어, tistory.com 에서 tistory에 카카오톡 비밀번호를 알려줄 필요 없이 카카오 인증으로 tistory의 인가를 처리할 수 있습니다. 이러한 방법은 다양한 보안적 위험을 줄일 수 있습니다. (tistory 웹사이트가 해킹당해도 계정 정보 탈취와 같은 문제가 발생하지 않습니다)

tistory에서 OAuth를 활용하는 예시


즉, OAuth는 암호 데이터를 공유하지 않고 인증 토큰을 사용하여 소비자와 서비스 제공자 간의 동일성을 증명합니다. OAuth는 사용자가 자신의 암호를 전달하지 않고 자신을 대신하여 한 애플리케이션이 다른 애플리케이션과 상호 작용하는 것을 승인할 수 있는 인증 프로토콜 입니다.

(OAuth) Open Authorization
인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사의트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근권한을 부여할 수 있는 공통적인 수단으로 사용되는, 접근 위임을 위한 개방형 표준이다.

OAuth 1.0

Client ( 사용자, 로그인을 하려고 하는 주체 )

Server ( 백엔드 서버 )

Kakao ( 소셜 서비스 )

 

Step 1. 로그인 요청

Client가 소셜 로그인을 시도하려고 할 경우, Server은 해당 응답을 받고 Kakao 로그인 화면으로 redirect 해줍니다

 

Step 2. 로그인

소셜 서비스 웹 사이트에서 직접 로그인을 시도합니다. 로그인이 성공할 경우 인증 토큰을 Server으로 전송합니다.

 

Step 3. 사용자 로그인 처리

인증 토큰을 Kakao에 요청하면 Client의 개인정보를 가져옵니다. 그리고 로그인 성공 신호를 Client에게 보냅니다.

OAuth 2.0

OAuth 2.0OAuth 1.0에서 완전히 재설계된 것으로, 서로 호환되지 않습니다. (현재는 OAuth 1.0을 지원하지 않습니다.) OAuth 1.0은 복잡한 암호화 요구 사항과 확장성이 없다는 점에서 만들고 설계하기가 번거로웠습니다. 반면 OAuth 2.0에는 다양한 유형의 애플리케이션과 요구사항에 대해 6개의 플로우가 있으며 HTTPS 적용도 가능합니다. OAuth 토큰은 전송 중에 암호화되므로 따로 암호화를 할 필요도 없습니다. 즉 OAuth 1.0보다 보안적 측면에서도 뛰어나고 확장성 뿐만 아니라 만들기도 쉬워졌습니다.

 

출처: https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api

Client ( 사용자, 로그인을 하려고 하는 주체 )

Server ( 백엔드 서버 )

Auth Server ( 소셜 로그인을 제공하는 서버 )

 

Step 1. 인가코드 받기

Client가 소셜 로그인을 시도하려고 할 경우, Auth Server에서는 사용자가 로그인을 할 수 있도록 페이지와 개인정보 동의를 요구합니다. 성공적으로 로그인이 진행되면 Auth Server에서는 Server로 인가 코드를 전달해줍니다.

 

Step 2. 토큰 발급

Server에서는 인가코드를 다시 Auth Server에게 전달해주면 암호화된 Token을 발급해서 Server로 전달합니다.

 

Step 3. 사용자 로그인 처리

암호화 된 토큰을 다시 Auth Server에게 전달해주면 Client의 개인정보(동의가 된)를 Server에게 전송해줍니다. Server은 Client의 정보를 이용해 로그인을 처리하고 Client에게 로그인 성공/실패 신호를 전달합니다.

 

 

참고자료

https://velog.io/@hyg8702/OAuth란-OAuth1-vs-OAuth2

https://www.varonis.com/blog/what-is-oauth

https://oauth.net/2/

'STUDY' 카테고리의 다른 글

(한국어 번역) RFC6749 - The OAuth 2.0 Authorization Framework  (0) 2023.10.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함