Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

forest_moon

OAuth2.0 이란 본문

이것저것

OAuth2.0 이란

rokga 2023. 2. 14. 14:00

개인적으로 OAuth2.0사용한이유는 ? ?

나의 경우에는 프로젝트 진행할때 사용한 적이있다. 일반적으로 보안이 잘 되어있지 않은 사이트에서 개인정보가(이메일,핸드폰번호) 들어가게 된다면 별로 좋지 않다고 이야기를 들었었고,겸사겸사 새로운 API를 사용해보고 싶어서 도입 했었다.

 

 

OAuth(Open authorization)란 ?

 

인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신의 정보에 대해 

웹사이트 나 앱의 접근권한을 부여할 수 있는 공통적인 수단으로서 사용되는 

접근 위임을 위한 개방형 표준이다 .

 

쉽게말해 다양한 플랫폼에서 권한 부여를 위한 산업 프로토콜이다. 

 

OAuth의 탄생 하게된 이유

OAuth 방식이 등장하기 전에는 인증방식의 표준이 없었기 때문에 기존의 기본인증인 id 와 password 를 사용하였었다

id와 password를 직접 입력받아 저장하여 필요할 때마다 불러와서 사용을 해야 했는데, 이런 방식을 사용하게 되면 다음과 같은 문제가 발생할 수 있다

  • 사용자: 내가 만든 사이트에 다른 사이트의 id와 password를 공개하는 것에 대해서 신뢰할 수 없다
  • 내가 만든 사이트: id와 password를 받았기에 보안 문제가 생기는 경우 모든 책임을 져야한다
  • 다른 사이트 (google, naver): 내가 만든 사이트를 신뢰할 수 없다

위와 같은 문제를 해결하기 위해 2006년 11월 트위터 개발자와 Ma.gnolia의 개발자가 안전한 인증방식에 대한 논의를 하면서 OAuth가 등장했고, 2007년 10월 3일, OAuth 코어 1.0의 최종 초안이 발표되었다.

현재는 OAuth 1.0a를 거쳐 OAuth2.0이 주로 통용 되고있다.

 

OAuth2.0 역할

Resource Server 사용자의 개인정보를 가지고있는 애플리케이션 (Google, Facebook, Kakao 등) 서버다.  Client는 Token을 이 서버로 넘겨 개인정보를 응답 받을 수 있다.
Resource Owner (자원 소유자) 서드파티 애플리케이션 (Google, Facebook, Kakao 등)에 이미 개인정보를 저장(회원가입)하고 있으며 Client가 제공하는 서비스를 이용하려는 사용자,
'Resource' 는 개인정보라고 생각하면 된다.
Client OAuth 2.0을 사용해 서드파티 로그인 기능을 구현할 자사 또는 개인 애플리케이션 서버다.
Authorization Server (권한 서버) 권한을 부여(인증에 사용할 아이템을 제공주는)해주는 서버다.
사용자는 이 서버로 ID, PW를 넘겨 Authorization Code를 발급 받을 수 있다.
Client는 이 서버로 Authorization Code을 넘겨 Token을 발급 받을 수 있다.

시퀀스 다이어그램으로 설명하면 구조는 다음과 같다. (PAYCO에서 명확하게 잘 표현해주고 있다.)

 

 

시퀀스 다이어그램에는 refresh token이 없지만 보통 Authorization Server로 부터 access token(짧은 만료기간)과

refresh token(긴 만료기간)을 함께 부여 받는다.  access token은 보안으로 인한 짧은 만료기간이 지나고 나면 재로그인을 해야하지만 refresh token이 있다면 재로그인을 하지 않고 유효한 refresh token의 검증을 통해 access token을 재발급 받아 이용 가능하게 한다.

 

OAuth2.0 인증 절차 종류

  • Authorization Code Grant
    • Client가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용
    • 리소스 접근을 위해, Authorization Server에서 받은 권한 코드로 리소스에 대한 액세스 토큰을 받는 방식
    • 다른 인증 절차에 비해 보안성이 높기에 주로 사용된다
  • Implicit Grant
    • Authorization Code Grant 와 다르게 권한 코드 교환 단계가 있다
    • 액세스 토큰을 즉시 반환받아 이를 인증에 이용하는 방식
  • Resource Owner Password Credentials Grant
    • Client가 암호를 사용하여 액세스 토큰에 대한 사용자의 자격 증명을 교환하는 방식
    • Resource Owner에서 ID, Password를 전달 받아 Resource Server에 인증하는 방식으로 신뢰할 수 있는 Client 기능
  • Client Credentials Grant
    • Client가 컨텍스트 외부에서 액세스 토큰을 얻어 특정 리소스에 접근을 요청할 때 사용하는 방식

 

 

그렇다면 OAuth1.0 OAuth2.0 차이 점은 ?

비교 OAuth1.0 OAuth2.0
참여자구분 이용자
소비자
서비스 제공자
자원 소유자
클라이언트
권한 서버
자원 서버
토큰 요청 토큰 (Request Token)
접근 토큰 (Access Token)
접근 토큰 (Access Token)
재발급 토큰 (Refresh Token)
유효기간 접근 토큰의 유효기간 없음 접근 토큰 유효기간 부여
만료 재발급 토큰 이용
클라이언트 서비스 ,

 

 

 

Reference

https://hwannny.tistory.com/92

https://velog.io/@kjhxxxx/OAuth-OAuth-2.0-%EC%9D%B4%EB%9E%80

'이것저것' 카테고리의 다른 글

[macOS] M1 Mac에 brew 설치  (0) 2023.02.15
CORS 란?  (0) 2023.02.14
SQL 과 NOSQL  (0) 2023.02.10
JVM 메모리의 구조(코드, 데이터, 힙, 스택 영역)  (0) 2023.02.03
쿠버네티스란 ?  (0) 2023.01.09