OAuth2 인증

장서연·2022년 5월 18일
0

스프링 시큐리티

목록 보기
4/9

본 포스트는 도서 처음 배우는 스프링 부트 2 의 5장 OAuth 인증 파트를 읽고 이해한 내용을 정리하였습니다.

OAuth?

OAuth 는 토큰을 사용하여 인증하는 표준 인증 프로토콜이다.
OAuth2 는 OAuth 프로토콜의 버전 2이며, OAuth2에서 제공하는 승인타입은 총 4가지이다.

  • 권한 부여 코드 승인 타입(Authorization Code Grant Type)
    클라이언트가 사용자 대신 특정 리소스에 접근을 요청할 때 사용한다. 리소스 접근을 위한 사용자명과 비밀번호, 권한 서버에 요청해서 받은 권한 코드를 함께 활용하여 리소스에 대한 액세스 토큰을 받으면 이를 인증에 이용하는 방식

  • 암시적 승인 타입(Implicit Grant Type)
    권한 부여 코드 승인 타입과 다르게, 코드 교환 단계 없이 액세스 토큰을 즉시 받아 인증에 이용하는 방식

  • 리소스 소유자 암호 자격 승인 타입
    클라이언트가 암호를 사용하여 액세스 토큰에 대한 사용자의 자격 증명을 교환하는 방식

  • 클라이언트 자격 승인 타입

  • 클라이언트가 컨텍스트 외부에서 액세스 토큰을 얻어 특정 리소스에 접근을 요청할 때 사용하는 방식

이 4가지의 방식 중 눈여겨볼 방식은 권한 부여 코드 승인 타입

페이스북, 구글, 카카오 등의 소셜 미디어들이 웹서버 형태의 클라이언트를 지원하는데, 이 방식을 사용하기 때문.
이 방식은 웹서버에서 장기 액세스 토큰(long-lived access token)을 사용하여 사용자 인증을 처리한다.

권한 부여 코드 승인 타입 시퀀스 다이어그램

  • 리소스 주인(resource owner) : ex) 인증이 필요한 사용자
  • 클라이언트(client) : ex) 웹사이트
  • 권한 서버(authorization server) : ex) 페이스북/구글/카카오 서버
  • 리소스 서버(resource server) : ex) 페이스북/구글/카카오 서버

다음과 같은 흐름으로 흘러간다.
1. 클라이언트가 파라미터로 클라이언트 ID, 리다이렉트 URI, 응답타입을 권한 서버에 전달한다. 정상적으로 인증이 되며느 권한 부여 코드를 클라이언트에게 보낸다. (응답 타입은 code, token 일 수 있으며, 응답 타입이 token 일 경우가 암시적 승인 타입에 해당)
2. 권한 부여 코드를 받은 클라이언트는 권한 부여 코드를 사용하여 액세스 토큰을 권한 서버에 추가로 요청한다. 이떄 필요한 파라미터는 client-id, client-secret, 리다이렉트 uri, 인증 타입이다.
3. 마지막으로 응답받은 액세스 토큰을 사용하여 리소스 서버에 사용자 데이터를 요청한다.

결론

'사용자명 + 비번' 인증 방식은 DB 에 저장된 사용자명과 비번이 같은지 한번만 요청하면 되지만 OAuth 방식은 최소 세번 요청한다. 하지만 OAuth2 는 회원가입 절차 없이 이미 있는 소셜 미디어 계정으로 인증하기 때문에 사용자입장에서는 더욱 편리하며, 서비스 측면에서는 회원 가입관련기능을 축소시키고, 소셜에서 제공하는 사용자의 정보를 가져올 수 있어서 좋음.

0개의 댓글