Spring Security - OAuth 2.0

uudean·2023년 7월 18일
0

Spring

목록 보기
13/13

OAuth 2.0 이란?

특정 애플리케이션에서 사용자의 인증을 직접 처리하는 것이 아닌 사용자 정보를 가지고 있는 신뢰할 만한 써드 파티 애플리케이션 등에서 사용자의 인증을 대신 처리하고 Resource 에 대한 자격 증명용 토큰을 발급한 후 , 클라이언트가 해당 토큰을 이용해 써드 파티 애플리케이션의 서비스를 사용할 수 있게 하는 방식

OAuth 2 를 사용하는 애플리케이션 유형

  1. 써드 파티 애플리케이션에서 제공하는 API 직접 사용

    • 사용자가 OAuth 2 인증 프로토콜을 이용해 써드 파티 애플리케이션에 대한 인증을 성공하면 써드 파티 애플리케이션에서 제공하는 API 를 활용한 커스텀 서비스를 제공하는 것
  2. 추가적인 인증 서비스 제공 용도

    • 일반적으로 제공하는 아이디 / 패스워드 로그인 인증 이외에 OAuth 2 를 이용한 로그인 인증 방법을 추가로 제공하는 것

OAuth 2.0 동작 방식

OAuth 2 인증 컴포넌트들의 역할

  • Resource Owner

    • 사용하고자 하는 Resource 의 소유자
    • 쉽게 말해 서비스를 이용하는 사용자
  • Client

    • Resource Owner 를 대신해 보호된 Resource 에 액세스하는 애플리케이션
    • 서버, 데스크톱, 모바일 또는 기타장치에서 실행되는 애플리케이션이 될 수 있음
  • Resource Sever

    • 클라이언트의 요청을 수락하고 Resource Owner 에게 해당하는 Resource 를 제공하는 서버
  • Authorization Server

    • 클라이언트가 Resource Server 에 접근할 수 있는 권한을 주는 서버
    • Resource Owner 가 인증에 성공하면 클라이언트에게 AccessToken 형태로 Resource 에 접근 할 수 있는 권한을 부여

OAuth 2 동작 흐름

  1. Resource Owner 는 Client 역할을 하는 웹 애플리케이션에게 OAuth2 인증을 요청

    • 웹 애플리케이션 자체적인 로그인을 제공하는 것이 아닌 계정 정보를 가지고 있는 써드 파티 애플리케이션의 로그인을 제공하는 것
  2. Resource Owner 의 계정 정보를 가지고 있는 써드 파티 애플리케이션에 로그인 할 수 있도록 써드 파티 애플리케이션 로그인 화면으로 Redirect

  3. 로그인에 성공하면, Authorization Server 에서 로그인 인증이 성공적으로 수행되었음을 증명하는 AccessToken 을 클라이언트에게 제공

  4. Resource Server 에게 Resource Owner 소유의 Resource 를 요청

  5. 클라이언트가 제공한 AccessToken 을 검증 후 자격이 증명되면 Resource 를 클라이언트에 제공

OAuth2 에서 사용되는 용어

  • Authorization Grant
    • 클라이언트 애플리케이션이 AccessToken 을 얻기 위한 Resource Owner 의 권한을 표현하는 크리덴셜을 의미
  • AccessToken
    • 클라이언트가 Resource Server 에 보호되어 있는 Resource 에 액세스 하기 위해 사용하는 자격 증명 토큰
  • Scope
    • 주어진 AccessToken 을 사용하여 액세스 할 수 있는 Resource 의 범위

Authorization Grant 유형

  • Authorization Code Grant : 권한 부여 승인 코드 방식

    • 권한 부여 승인을 위해 자체 생성한 Authorization Code 를 전달 하는 방식
    • 가장 많이 쓰이는 방식
    • RefreshToken 사용 가능 , 권한 부여 승인 요청 시 응답 타입을 code 로 지정하여 요청
  • Implicit Grant : 암묵적 승인 방식

    • 별도의 Authorization 없이 바로 AccessToken 을 발급하는 방식
    • RefreshToken 사용 불가하고 Authorization Server 는 Client Secret 을 통해 인증 과정을 생략
  • Resource Owner Password Credential Grant : 자원 소유자 자격 증명 방식

    • 로그인 시 필요한 정보 ( username, password ) 로 AccessToken 을 발급 받는 방식
    • 자신의 서비스에서 사용되는 애플리케이션에서만 사용되는 방식으로 RefreshToken 사용 가능
    • 즉, Authorization Server, Resource Sever, Resource 가 같은 시스템에 속해 있을 때 사용 가능
  • Client Credentials Grant : 클라이언트 자격 증명 방식

    • 클라이언트 자신이 관리하는 Resource 또는 Authorization Server 에 해당 Client 를 위한 제한된 Resource 접근 권한이 설정 되어 있을 때 사용하는 방식
    • 자격 증명을 안전하게 보관 할 수 있는 클라이언트 에서만 사용해야 하며, RefreshToken 은 사용 불가

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

글이 잘 정리되어 있네요. 감사합니다.

답글 달기

관련 채용 정보