2020.코딩일지

[인증/보안]OAuth2.0[BEB 6th] 본문

WebServer&DB&CTI

[인증/보안]OAuth2.0[BEB 6th]

개발하는라푼젤 2022. 8. 15. 15:37
728x90
코드스테이츠 블록체인 부트캠프 6기 

 

[인증/보안]HTTPS(쿠키세션토큰쪼끔)  

[인증/보안]Token-based Authentication토큰기반인증에 대하여 

🙃[인증/보안]OAuth2.0 

[인증/보안]추가메모


✅Authentication(인증)과 Authorization(인가)의 차이가 무엇인가? 

인증: 보호된 리소스에 접근하는 것을 허용하기 전에 등록도니 유저의 신원을 입증(validating)하는 과정

인가: 요청된 리소스에 접근할 수 있는 권한이 있는 인증(authenticated)된 유저인지 입증하는 과정

OAuth 2.0 Authorization Code Grant 클라이언트가 다른 사용자 대신 특정 리소스에 접근을 요청할 때 사용

인증절차간소화/용어변경/다양한인증방식제공(6가지) 의 차이로 1.0과 2.0으롤 나누어진다.

✅Authorization callback URL은 무엇인가?

OAuth 메커니즘이 인증 과정이 끝난 후 리디렉션을 통해 다시 내 앱으로 이동하는 원리이므로,

내 앱으로 돌아가기 위한 Authorization callback URL이 필요합니다

 

 

OAuth는 인증을 중개해주는 메커니즘이다.

OAuth2.0은 인증을 위한 표준 프로토콜의 종류.

보안된 리소스에 액세스하기 위해 클라에게 권한을 제공(Authorization)하는 프로세스를 단순화하는 프로토콜이다.

(소셜로그인으로 해당 서비스 이용가능)

완벽한 솔루션은 아니지만, 1) 편하다! 2) 보안상이점:민감정보를 app에 노출되지않는다,권한도 유저에게 미리 물어주니 안전!

사용자 정보가 내 서버에 저장되는것은 똑같.

OAuth는 인증(Authentication)을 다른 서비스에 맡길 뿐, 접근 권한 관리(Authorization)는 서버몫

 

OAuth에서 꼭 알아야 할 용어

김코딩 Resource Owner 액세스 중인 리소스의 유저.
구글계정을 이용해 app에 로그인할 경우 이때의 오너는 '김코딩'
App Client Resource owner를 대신하여 보호된 리소스에 액세스하는 응용프로그램.
클라는 서버, 데탑, 모바일 또는 기타장치에서 호스팅 가능
facebook 🔮Resource server client의 요청을 수락,응답 할 수있는 서버.
facebook 🔮Authorization server Resource server가 액세스 토큰을 발급받는 서버.
클라 및 리소스 소유자를 성공적으로 인증한 후 액세스 토큰을 발급하는 서버.
  Authorization grant  [type] 클라가 액세스 토큰을 얻는 방법. 얻을 때 사용하는 자격 증명의 유형
타입의종류) 
*Authorication Code Grant Type (일반적인유형)
Implicit Grant Type
Client Credentials Grant Type
Resource Owner Credentials Grant Type
*Refresh Token Grant Type
OAuth받아
Server주면
다시 OAuth
Authorization code access token을 발급받기 전에 필요한 code.
client ID로 이 code를 받아온 후, client secret과 code를 이용해 access token🤑을 받아온다.
OAuth가
Server에게.
다시client에게
Access token🤑 보호된 리소스에 액세스하는데 사용되는 credentials.
authorzation code와 client secret을 이용해 받아온 access token🤑으로 이제 🔮Resource server에 접근할 수 있다.
image scope 토큰의 권한을 정의
주어진 access token을 사용하여 액세스할 수 있는 리소스의 범위

 

OAuth2.0인증 절차 종류

*Authorication Code Grant Type (일반적인유형)

액세스 토큰을 받아오기위해서 먼저 code를 받아 액세스토큰과 교환하는 방법 ...

이 절차가 번거롭게 왜하냐?싶을 수 있지만, 보안강화목적이다.

(client에서 client-secret을 공유하고 액세스 토큰을 가지고 오는것은 탈취할 위험이 있기 때문에)

Authorication Code Grant Type

 

*Refresh Token Grant Type

일정기간 유효 시간이 지나서 만료된 액세스 토큰을 편리하게 다시 받아오기 위해 사용하는 방법

Access token보다 Refresh token의 유효기간이 대체로 조금 더 길게 설정하기 때문에 가능한 방법이다.

(server마다 정책이 다르게 때문에, refresh token을 사용하기 위해서는 정책을 살펴보아야 한다.)

Refresh Token Grant Type

 

Comments