Oauth 2.0이란?

문딤·2022년 11월 28일
0

Oauth 2.0이란?

open AUthentication2 의 약자로 인증 및 권한 획득을 위한 표준 프로토콜,프레임워크이다.

HTTP 서비스에 대한 접근 권한을 얻기 위해 APP 승인 작용을 조율해서 RESOURCE OWNER를 대신한다.

Oauth 관련 용어

Resource owner

보호되고 있는 자원에 대한 접근 권한을 부여 할 수 있는 소유자.
ex) 우리앱에서 소셜 로그인을 하고 싶은 사용자.

Resource Server

Client가 제어 하고자 하는 자원을 보유하고 있는 서버.
ex) 구글, 네이버 , 카카오, github

Client

Resource server에 접속해서 정보를 위임받는 app
ex) 내가 만드는 app server

Client ID, secrets ,Authorized redirect Url
github에서 Oauth2.0을 이용하기위해 client app을 등록할 때 발급해준다.

Client ID: CLIENT APP 구별을 위한 노출 가능한 식별자
Client Secret: clientID에 대한 비밀키로 절대 노출이 되면 안된다.
Authorized redirect Url : 인증을 마치고 redirect가 이루어지는데 QueryString으로 넘어오는 Unique한 code

===> 해당 code와 Client Id, Secret을 가지고 accessToken을 발급 받는다.

Oauth 동작 원리

Client app에 관련된 Github의 흐름.

  1. 사용자는 GitHub ID를 요청하도록 REDIRECTION 된다.
  2. 사용자는 GitHub에 의해 SITE로 다시 REDIRECTION 된다.
  3. 앱이 사용자의 ACCESS 토큰으로 API에 엑세스한다.
  1. 사용자의 ID 요청

GET https://github.com/login/oauth/authorize

-> 이를 통해 USER에게 로그인 및 앱 승인을 사용할 수 있는 계정으로 사용할 것인지 묻는다.

  1. 사용자는 GitHub에 의해 다시 redirection된다.
  1. 받은 코드를 사용해서

post https://github.com/login/oauth/access_token 정보를 요청

+@ OpenID CONNECT SERVER를 지원하는 RESOURCE SERVER를 이용하면 더 손쉬운 구현이 가능하다.

참고

https://oauth.net/2/

https://hongdosan.tistory.com/entry/Spring-OAuth2-%EC%86%8C%EC%85%9C-%EB%A1%9C%EA%B7%B8%EC%9D%B8%EC%9D%B4%EB%9E%80?category=1039318

https://docs.github.com/en/developers/apps/building-oauth-apps/authorizing-oauth-apps#web-application-flow

profile
풀스택개발자가 될래요

0개의 댓글