관리 메뉴

제뉴어리의 모든것

[Section 4] [Spring Security] OAuth2 인증 [추후 정리] 본문

코드스테이츠/정리 블로깅

[Section 4] [Spring Security] OAuth2 인증 [추후 정리]

제뉴어리맨 2022. 10. 4. 00:53

전체 목록

  • oauth2란
  • oauth2 동작 방식
  • oauth2를 위한 사전 작업

 

oauth2란

OAuth 란 “Open Authorization” 이라는 의미로, 2는 버전 2.0을 의미한다.

OAuth란 쉽게 말해, 사용자가 특정 사이트로부터 인증을 받는 여러가지 방법 중 하나이다.

하지만 그 인증을 특정 애플리케이션이나 웹사이트에서 대신 인증을 받아주는것이다.

 즉,

 

사용자 -> 사용앱 -> 인증 사이트

이런 구조에서 사용자가 사용중인 앱에서 자신을 인증(로그인) 받기 위해 "사용앱"에서 받는것이 아니라

인증 사이트에서 받는데 인증 결과를 사용앱에서 받아보게 된다. 그렇게 인증이 정상적으로 이루어진 유저를 "사용앱"에서는 정상적인 유저로써 판단하고 인증처리를 하게 된다.

그리고 "사용앱"은 이제 인증 사이트에서 마치 "사용자"처럼 사용자의 정보 (이름, 사진, 기타 등등의 사용자 정보)를 가져다 쓸 수 있는것이다.

 

  • oauth2에서 알아야할 개념

    아래의 정의 부분의 이해를 위해 상황을 가정하여 보겠다.

    상황 :
    어떤 사람이 "일정관리앱"을 실행하였고, 일정관리앱에서 그 사람은 "카카오톡 로그인"을 클릭하여 자동 가입을 하였다. 그렇게 일정관리앱에 입장을 하고 보니 일정관리앱에서 나의 프로필은 자동으로 내 카카오톡 프로필 사진으로 되어있다.

    1. Resource Owner
    리소스의 소유자로, 위에 상황에서 일정관리앱을 실행한 사람에 해당한다.
    리소스 서버에 있는 데이터 (리소스) 의 소유자이다.

    2. Client 
    Resource Server 와 Authorization Server 로 request를 하는 클라이언트이다.
    위에 상황에서 "일정관리앱"에 해당한다.

    3. Resource Server 
    Resource Owner 의 데이터(리소스)를 가지고 있는 데이터 서버이다.
    위에 상황에서는 "카카오톡" 에 해당한다.
     
    4. Authorization Server
    인증을 처리를 해주는 서버로써, 인증이 완료된 클라이언트에게 인가 (권한부여)를 해준다.
    위에 상황에서는 "카카오톡"에 해당한다.

oauth2 의 상황에서는 앱 또한 Resource Server, Authorization Server 의 클라이언트임을 인지하자.

oauth2 동작 방식

ouath2 동작 방식에는 4가지의 종류가 있다.

 

동작 방식 종류

 

  • Authorization Code Grant : 권한 부여 승인 코드 방식
    기본이 되는 방식이다.
    클라이언트(앱)이 권한 부여 승인 요청을 하고 Authorization Server에서 자체 생성한 code값을 리턴하여 준다.
    refresh 토큰의 사용이 가능하다.

  • Implicit Grant : 암묵적 승인 방식
    별도의 Authorization Code 없이 바로 Access Token을 발급하는 방식
    refresh 토큰 사용 불가하다.

  • Resource Owner Password Credential Grant : 자원 소유자 자격 증명 승인 방식
    간단하게 로그인 시 필요한 정보(username, password)로 Access Token을 발급받는 방식
    refesh 토큰의 사용도 가능하다.

  • Client Credentials Grant : 클라이언트 자격 증명 승인 방식
    refresh 토큰 사용 불가

 

아래의 내용은 주된 방식인 Authorization Code Grant 방식의 설명이다.
상세한 과정은 구현 방식에 따라 조금씩 다를 수 있다.

 



더보기

더 자세한 이미지 설명

 

출처 : https://velog.io/@wnguswn7/Section4-4.-Spring-Security-OAuth2-2

 

 

oauth2를 위한 사전 작업

구글 api 페이지에 내 앱을 등록하는 과정이다.

중요 포인트는 

앱의 id, secret (앱 인증에 쓰이는 Credetial) 을 기억 해두고 있어야하며

인증 리다이렉트 url을 잘 기입해야한다.

인증 리다이렉트 url은 

resource owner가 인증 서버에서 인증을 하고 나서 

client (앱) 으로 다시 리다이렉트 시키기 위한 url이다.

해당 url로 사용자가 client(앱)로 request를 보내면, client(앱)는 인증서버로  코드 요청을 하고,

인증서버는 코드를 반환하여 준다.

 

상세한 내용은 아래의 링크에 나와있는 앱 구글등록 부분으로 대체한다.

[OAuth 2] 구글 로그인 연동하기 (tistory.com)

 

[OAuth 2] 구글 로그인 연동하기

Spring Security - 막강한 인증, 인가 기능을 가진 프레임워크 OAuth : 인터넷 사용자들이 비밀번호 제공하지 않고 다른 웹 사이트 상의 자신들의 정보에 대해 웹 사이트나 애플리케이션의 접근 권한을

yeonyeon.tistory.com