진짜 개발자
본문 바로가기

IT Knowledge

IT Knowledge - Oauth2 - 1 (개념)

728x90

Oauth2 - 1 (개념)


Oauth2 - 2 (App 등록)


Oauth2 - 3 (인증 과정)





(참조 - https://opentutorials.org/course/3405/22006  생활코딩)

1. 기존의 방법 (위험한 방법)

(그림출처 - 생활코딩 Oauth)


*용어

User : 우리의 서비스를 이용하는 사용자

Mine : 사용자의 정보를 가공하여 그것을 다시 사용자에게 어떠한 서비스를 제공하는 제공자

Their : 사용자의 정보가 저장되어있는 기존의 서비스


*서비스 제공개념

달력서비스를 제공한다고 생각을 해보자


1. 사용자가 기념일을 확인하기 위해 Mine(우리의 서비스)에 가입을 했다

2. Mine(우리의 서비스)는 사용자의 생일 이라던지 여타 정보들을 얻기위해 Their 에 접근을 해야한다

3. User(서비스 사용자)로 부터 IDPassword를 입력받아 그것을 Mine(우리서비스) 서 보관을 한다

4. 사용자로 부터 입력받은 ID와 Password를 이용하여 Their에 접근하여 사용자의 정보를 얻어온다

5. 얻어온 사용자의 정보를 이용하여 User(사용자)에게 다시 서비스를 제공한다


*위험

User : 자신의 비밀번호를 신뢰할 수 없는 서비스에서 보관하고 있음은 굉장히 불안한 것.

Mine : 우리가 사용자의 ID와 PW를 보관하고 있다가 보안 사고가 난다면 굉장한 피해를 볼 수 있다.



2. Oauth



(그림 출처 - 생활코딩 oauth)


위의 그림은 Oauth의 입장에서 바라본 기존의 User, Mine(서비스 제공자) , Oauth 의 모식도 이다.


*용어

Resource Owner Client(서비스)을 이용하는 자

ResouceServer에 가입이 되어있는, 즉 정보의 주인.  

Client - Resource Owner의 정보를 Resource Server로 부터 요청하는 Client 이다.

    - Resource Owner에게 서비스를 제공하는 자이다.

Resource Server - Resource Owner의 정보를 보관하고 있는 자로 ResourceOwner로 부터 인증을 받아

 Clinet에게 ResourceOwner의 정보를 제공하는 정보 보관소이다.



*서비스 제공개념

1. 아이디와 비밀번호를 이용하지 않는다

2. 먼저 Client(서비스 제공자)Resource Owner(User)에게 어떤 서비스를 제공하기 위해

Resource Server에게 필요한 정보를 요청한다

3. Resource Server Resource Owner(User)에게 인증요청을 한다

4. Resource Owner(User)가 인증을 허가한다

5. Resource Server가 필요로하는 정보에만 접근할 수 있는 AccessTokenClient(서비스제공자)에게 

   발급한다.

6. Client(서비스 제공자)AccessToken을 가지고 Resource Server에 있는 Resource Owner(User) 의 정보를 얻어와 가공하여 Resource Owner(User) 에게 서비스를 제공한다


*장점

1. 사용자의 아이디와 비밀번호를 이용하지 않는다

2. AccessToken을 통해 Client(서비스 제공자)는 필요로 하는 정보에만 접근이 가능하다