티스토리 뷰

Architecture/Security

OAUTH

GOD동하 2019. 6. 12. 11:14

인증

 

기본적으로 auth란 인증 (authentication) 과 인가 (authorization)을 얘기합니다.

인증은 사용자가 해당 애플리케이션에 허가된 사용자인지 확인하는 절차를 말하는데

흔히 아는 로그인이 인증이라고 생각하면 됩니다.

 

인가는 특정 리소스나 서비스에 접근할 수 있는 권한을 허용하는 것을 말합니다.

보통 관리자나 일반 사용자의 특정 서비스 접근 권한이 다르게 부여되는 것을 생각하면 됩니다.

 

OAUTH2

 

OAuth 는 Authrozation Framework 로 정확히는 인가를 대신 해주기 위한 프레임워크로 생각하면 됩니다.

우리는 OAUTH2 기준으로 공부를 해보겠습니다.

 

[OAuth2 4개 구성요소]

1. Resource Owner : 사용자 (ex : 인증이 필요한 사용자)

2. Client : 리소스 접근을 위한 서비스 (ex : 웹사이트)

3. Authorization Server : 인가의 주체, 토큰 발행 (ex : 페이스북, 구글)

4. Resource Server : 리소스 제공 역할 (ex : 페이스북, 구글)

 

OAuth1.0에서는 Authorization Server와 Resource Server를 Service Provider라고도 불렀던거 같슴니다

Client는 두개의 타입으로 정의합니다.

 - Confidential : 사용자의 Secret 정보를 안전하게 보관할 수 있는 Client (서버 - API 연계)

 - Public : 사용자의 정보를 안전하게 보관할 수 없는 Client (보통 웹앱 혹은 모바일)

 

[Grant Type]

기본적으로 OAUTH2는 다양한 인증 방식을 지원 합니다.

3rd party에게 인증을 해주기 위한 3-legged 모델 뿐만 아니라 client-server 간의 2-legged 모델을 위한 인증 방식도 지원합니다.

 

1. Authorization Code 

 - Client가 사용자 대신 특정 리소스 접근을 요청할 때 사용됩니다. Authorization Server에서 부여받은 권한 Code를 활     용해 리소스에 대한 액세스 토큰을 발급 받습니다.

2. Implicit 

 - 권한 Code를 따로 받지 않고 액세스 토큰을 즉시 발급받아 인증에 이용하는 방식입니다.

3. Resource Owner Password Credentials 

 - 매우 신뢰적인 Client가 사용자의 id/pw 를 알고 있는 경우 직접 액세스 토큰을 발급 받는 방식입니다.

4. Client Credentials

 - 그냥 Client가 직접 client_id/client_secret을 가지고 인증하여 리소스를 사용하는 방식입니다.

 

TBD

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함