OAuth2.0란?
OAuth 2.0 (Open Authorization 2.0, OAuth2) : 인증을 위한 개방형 표준 프로토콜 -> Third-Party 프로그램에게 리소스 소유자를 대신하여 자원 접근 권한 위임 방식 제공함. = 로그인 기능을 기능을 사용할 수 있게 해주겠다.
구글, 페이스북, 카카오, 네이버 등에서 제공하는 간편 로그인 기능도 OAuth2 프로토콜 기반의 사용자 인증 기능을 제공하고 있다.
<OAuth 2.0 주요 용어>
Authentication : 인증, 접근 자격이 있는 검증하는 단계 Authorization : 인가, 자원에 접근할 권한을 부여, 인가가 완료되면 리소스 접근 권한이 담긴 Access Token이 클라이언트에게 부여된다. Access Token : 리소스 서버에게서 리소스 소유자의 보호된 자원을 획득할 때 사용되는 만료 기간이 있는 Token이다. Refresh Token : Access Token 만료시 이를 갱신하기 위한 용도로 사용하는 Token
<Roles- OAuth 2.0의 4가지 역할> : OAuth2 프로토콜을 구성하는 4가지의 역할
Resource Owner : 리소스 소유자 또는 사용자, 보호된 자원에 접근할 수 있는 자격을 부여해 주는 주체이다. OAuth2 프로토콜 흐름에서 클라이언트를 인증하는 역할을 수행 인증이 완료되면 권환 획득 자격을 클라이언트에게 부여함. 개념적으로는 리소스 소유자가 자격을 부여하는 것이지만 일반적으로 권한 서버가 소유자와 클라이언트 사이에서 중개 역할을 수행하게 됨. Client : 보호된 자원을 사용하려고 접근 요청을 하는 애플리케이션 Resource Server : 사용자의 보호된 자원을 호스팅하는 서버 Authorization Server : 권한 서버, 인증/인가를 수행하는 서버로 클라이언트의 접근 자격을 확인, Access Token을 발급하여 권한을 부여하는 역할을 수행
<Obtaining Authorization> : OAuth2 프로토콜에서는 다양한 클라이언트 환경에 적합하도록 권한 부여 방식에 따른 프로토콜을 4가지 종류로 구분하여 제공하고 있음
<Request and Response Examples>
client_id, client_secret : 클라이언트 자격증명, 클라이언트가 권한 서버에 등록하면 발급받을 수 있으며 권한 서버 연동 시 클라이언트의 검증에 사용됨. redirect_url : 권한 서버가 요청에 대한 응답을 보낼 url을 설정합니다. response_type : 권한 부여 동의 요청 시 포함되는 값으로 권한 부여 방식에 대한 설정 code : Authorization Code Grant token : Implicit Grant state : CSRF 공격에 대비하기 위해 클라이언트가 권한서버에 요청 시 포함되는 임의의 문자열, 필수 사항은 아니지만 클라이언트가 요청 시 state를 포함 시켰다면 권한 서버는 동일한 값을 클라이언트에게 보내야한다. grant_type : Access Token 획득 요청 시 포함되는 값으로 권한 부여 방식에 대한 설정 ㄴauthorization_code : Authorization Code Grant code : Authorization Code Grant 방식에서 Access Token요청 시 사용됨 권한 서버에서 획득한 Authorization Code를 입력함 token_type : 발행된 Token의 타입, 대표적으로 Bearer, MAC이 있음. expires_in : 토큰 만료 시간(단위 : 초) example_parameter : Token 타입에 따른 추가 파라미터
<OAuth2 Flow>

<OAuth2 Response>

Android에서 GITHUB OAuth사용 방법(Firebase를 통해서 했음)(블로그 모음)
Firebase 토대마련 (블로그)
https://velog.io/@dear_jjwim/안드로이드-Firebase-Authentication-GitHub-로그인
Android 프로젝트에 Firebase 추가 (Firebase document)
https://firebase.google.com/docs/android/setup?hl=ko
Firebase 도움 (블로그)
https://minggu92.tistory.com/75?category=928636
Android에서 Github OAuth 사용 방법 (Firebase document)
https://firebase.google.com/docs/auth/android/github-auth?hl=ko
Android studio에서 SHA1, SHA256 값 가져오는 방법 (블로그)
https://modelmaker.tistory.com/entry/안드로이드-Debug-SHA-Key-추출-방법

