Java_OAuth2

Minki CHO·2023년 1월 24일
0

CodeStates

목록 보기
26/43

OAuth 2 동작 방식

OAuth 2 인증 컴포넌트(Component, 구성요소)의 역할

1 Resource Owner
:사용하고자 하는 Resource의 소유자
(ex. 사용자 'john'이 구글 계정으로 로그인해서 google 서비스(Resource)를 이용하고 있다면,
john이 google 서비스라는 Resource에 대한 Resource Owner임)
:한마디로 google 등의 서비스를 이용하는 사용자

2 Client
:Resource Owner 대신하여 보호된 Resource에 액세스하는 애플리케이션
:서버, 데스크탑, 모바일 또는 기타 장치에서 실행되는 애플리케이션
(ex. 사용자 'john'이 A라는 애플리케이션을 통해 google 소셜 로그인을 이용한다면 애플리케이션 A는 Client가 됨)
:어떤 서비스를 이용하고자 하는 쪽은 Client이다
:Client와 Server에 대한 기준은 서비스를 제공하는 쪽을 기준으로 생각하기

(Rest Clinet 챕터 복습)

3 Resource Server
:Client의 요청을 수락하고 Resource Owner에게 해당하는 Resource를 제공하는 서버
(ex. A라는 애플리케이션(Client)이 구글 포토에서 john이라는 Resource Owner의 사진Resource을 가져오는 경우, 구글 포토 서비스를 제공하는 애플리케이션이 Resource Server가 됨)

4 Authorization Server
:Client가 Resource Server에 접근할 수 있는 권한을 부여하는 서버
:Resource Owner가 인증에 성공하면 Authorization Server는 Client에게 Access Token 형태로 Resource Owner의 Resource에 접근할 수 있는 권한을 부여
(if. 사용자 john이 구글 로그인 인증에 성공하면 A라는 애플리케이션Client이 Authorization Server로부터 구글 포토에 저장되어있는 john의 사진Resource에 접근할 수 있는 권한Access Token을 부여받음

OAuth 2 인증 컴포넌트들이 어떤식으로 상호작용하면서 사용자의 인증을 처리하는가

1) OAuth 2 인증 요청
:여기서의 인증 요청이란 Resource Owner가 인증할 수 있도록 Client인 웹 애플리케이션이 자체적으로 로그인 화면을 제공하는 것이 아님<노이해중>
:Resource Owner는 자신의 계정 정보를 관리하고 있는 써드파티 애플리케이션에 로그인하길 원하는 것이며, 이 요청을 Client인 웹 애플리케이션에 전송하는 것

2) 로그인 페이지로 Redirect
:Client는 Resource Owner가 Resource Owner의 계정 정보를 관리하고 있는 써드파티 애플리케이션에 로그인할 수 있도록 써드파티 애플리케이션의 로그인 페이지로 리다이렉트Redirect함

3) 로그인 인증
:로그인 인증을 진행하고 로그인 인증에 성공하면

4) Access Token 전송
:Authorization Server가 Resource Owner의 로그인 인증이 성공적으로 수행되었음을 증명하는 Access Token을 Client에게 전송함
:Resource Owner에게 Access Token을 전송하는 것이 아님
:Client 애플리케이션에게 Access Token을 전송
:Client는 Resource Owner를 대신해 Resource Owner의 Resource를 사용하는 대리인 역할을 하기 때문

5) Resource Owner의 Resource 요청
:Access Token을 전달받은 Client는 Resource Owner의 대리인 역할을 수행할 수 있게 됨
:Resource Server에게 Resource Owner 소유의 Resource를 요청함

6) Resource 전송
:Resource Server는 Client가 전송한 Access Token을 검증해서
:Client가 Resource Owner의 대리인으로써의 자격이 증명되면
:Resource Owner의 Resource를 Client에게 전송함

"어떤 Resource를 소유하고 있는 Resource Owner를 대신하는 누군가(Client)가 Resource Owner의 대리인 역할을 수행한다는 것"

아래는 구글이라는 구체적인 써드파티 애플리케이션을 예로 작성

OAuth 2 인증 프로토콜에서 사용되는 용어

1 Authorization Grant
:Client 애플리케이션이 Access Token을 얻기 위한 Resource Owner의 권한을 표현하는 크리덴셜Credential을 의미
:한마디로 Client가 Access Token을 얻기위한 수단
:네가지 타입이 존재
(1) Authorization Code
(2) Implicit Grant Type
(3) Client Credentials
(4) Resource Owner Password Credentials

2 Access Token
:Client가 Resource Server에 있는 보호된 Resource에 액세스하기 위해 사용하는 자격 증명용 토큰
:Authorization Code와 Client Secret을 이용해 Authorization Server로부터 전달받은 Access Token으로 자격을 증명하면 Resource Server에 접근할 수 있음

3 Scope
:주어진 Access Token을 사용하여 액세스할 수 있는 Resource 범위를 의미
(ex. Scope 설정을 통해 해당 Resource Owner의 사진첩에 접근할 수 있지만 연락처 등 다른 Resource에는 접근할 수 없도록 접근 권한을 지정할 수 있음)

Authorization Grant 유형

1 Authorization Code Grant 권한 부여 승인 코드 방식

profile
Developer

0개의 댓글