코드스테이츠_국비교육/[Section4]

67.01_[Spring Security] OAuth2 인증_개요 및 동작 방식_22.11.25

생각없이 해도 생각보다 좋다. 2022. 11. 26. 12:30

>OAuth2란?
: 신뢰할 만한 벤더(네이버, 카카오, 구글 등)에 사용자 인증 처리를 위임하는 인증 방식

>OAuth2를 사용하는 이유
: 다른 써드 파티 애플리케이션을 사용함에 있어서, 이중 로그인 혹은 이중 크리덴셜 관리를 피하기 위해
: 편의를 위해서

>OAuth2를 사용하는 애플리케이션 유형
1. 써드 파티 애플리케이션에서 제공하는 API 를 직접적으로 사용하는 애플리케이션
: 여기서 써드 파티 애플리케이션은 google, github, naver, kakao 등의 신뢰할 만한 벤더의 애플리케이션을 의미함.
2. 추가적인 인증 서비스 제공 용도
: 기존 인증 외의 신뢰할 만한 벤더의 써드 파티 애플리케이션이 제공하는 인증 서비스를 이용하는 용도로 사용.
: 혹은 아예 인증 처리를 위임하기 위해 사용.

>OAuth2 인증 컴포넌트(구성 요소)
-Resource Owner
: 리소스를 사용하는 사람. (애플리케이션 사용자를 의미)
-Client
: Resource Owner를 대신해 Resource를 액세스하는 애플리케이션
-Resource Server
: Resource를 제공하는 쪽 서버
-Authorization Server
: 권한이 부여된 AccessToken을 제공하는 쪽 서버

>OAuth2 인증 흐름
1. Resource Owner가 Client에게 인증 요청을 보냄
: Resource Owner가 인증 요청을 Client에게 보내지만, 사실상 인증받길 원하는 곳은 Resource를 제공해주는 써드 파티 애플리케이션임.
2. 인증 요청을 받은 Client는 Resource Owner를 위해 써드 파티 애플리케이션의 로그인 페이지를 가져다줌. 이를 Redirect라고 한다.
3. 써드 파티 애플리케이션의 로그인 인증은 Authorization Sever에서 관리한다.
4. Resource Owner의 로그인 인증을 성공하면 Authorization Sever는 Access Token을 생성하여 Client 애플리케이션에게 전달한다.
: 기존 방식에서는 Resource Owner에게 주기 때문에 헷갈릴 수 있지만, 사실 Client와 Server 관계가 바뀌었으므로 크게 달라진 건 없다.
: Client가 Resource Owner의 대리인 역할임을 기억하자.
5. Resource Owner는 client 애플리케이션을 이용해서 권한에 맞는 Resource를 Resource server에서 사용할 수 있다.

>Authorization Grant 유형
: Authorization Grant은 Client 애플리케이션이 Resource Owner의 권한을 표현하는 크리덴셜이다.
: 즉, Client 애플리케이션이 Access Token을 얻기 위한 수단으로, 토큰을 얻는 방법이다.
1. Authorization Code Grant : 권한 부여 승인 코드 방식
2. Implicit Grant : 암묵적 승인 방식
3. Resource Owner Password Credential Grant : 자원 소유자 자격 증명 승인 방식
4. Client Credentials Grant : 클라이언트 자격 증명 승인 방식