[WEB] OAuth

Seongho·2024년 3월 6일
0

WEB

목록 보기
10/10
post-thumbnail

인증과 인가

일단 인증과 인가가 뭔지 한번 알아보자.

  • 인증 (Authentication) : 현재 웹 서비스를 이용하려는 이용자의 신원을 확인하는 행위이다.
    ex) 로그인
  • 인가(Authorization) : 현재 웹 서비스의 리소스를 인증된 사용자가 접근 권한을 부여받는 행위이다.
    ex) 관리자 페이지에 관리자 계정으로 로그인 한 사람이 접근

OAuth ?

OAuth는 사용자가 자신의 리소스(개인정보, 사진, 동영상..etc)를 제 3자 애플리케이션에 안전하게 공유할 수 있도록 하는 프로토콜로, 3자 애플리케이션에 대한 엑세스 권한을 부여할 수 있도록 하는 개방형 프로토콜이다.

OAuth 1.0 프로토콜

OAuth 1.0 프로토콜에는 세 개의 주체가 있다.

  • Resource Owner : 사람이다. 각종 웹 서비스에 로그인하고 서비스를 이용하려는 주체이다.
  • OAuth Client : Resource Owner의 리소스를 활용하려는 서비스이다.
  • OAuth Server : Resource Owner의 신분을 확인하여 인증하고 OAuth Client에게 인가를 수행하는 주체이다.

OAuth 1.0 흐름

OAuth 1.0 문제점

  • Scope 개념이 없다. 만약, 어떤 서비스(OAuth Client)가 구글 드라이브(OAuth Server)에 접근해 사진을 가져오고 싶다면 OAuth 1.0 을 사용하면 될 것이다. 그런데, 이때, OAuth Client가 사진에만 접근해야 하는데, 사진 뿐만 아니라 모든 범위의 정보에 접근할 수 있게 된다.
  • OAuth Client와 OAuth Server 간에 토큰에 대한 비밀 키를 공유하는데, 보안상 위험 요소로 작용할 수 있다.
  • OAuth Client에서 이 기능을 구현하기에 어려움이 있었다.

OAuth 2.0 프레임워크의 등장

  • Scope 기능이 추가되었다. 따라서, Scope에 따라 Client가 접근하는 지원을 제한할 수 있게 되었다.
  • Client의 구현 복잡성을 간소화하였다.

    OAuth 1.0 에서는 위 사진의 오른쪽과 같이 매번 암호화된 원문을 Server로 보내야 했지만,
    OAuth 2.0 에서는 인증 시 Bearer Token을 발급하고 해당 토큰을 소유하고 있다면, 인증/인가된 사용자로 인식하도록 하였다. 이때, SSL 기술이 강제된다.
  • Refresh Token을 이용하여 Access Token의 유효기간을 줄이고 토큰 탈취에 대응하였다.
  • OAuth 1.0에서 웹 브라우저 환경을 제외한 다른 환경에서는 사용하기 힘들었지만,
    OAuth 2.0은 Grant(여러 환경에 대한 플로우를 나타내는 인증 방식)를 추가하여 여러 상황과 환경에서 사용할 수 있게 하였다.

Grant

  • Authorization Code Grant : 최초 인증 후, 서버 - 서버 통신
    간편 로그인 기능에서 사용하는 방식으로, 클라이언트가 사용자를 대신하여 자원에 접근할 때 사용된다.


  • Implicit Grant : 로그인 인증 후에 토큰을 발급받아 인가
    자격 증명을 안전하게 저장하기 힘든 클라이언트에 최적화된 방법이다.


  • Resource owner password credentials : 인증된 사용자의 로그인 아이디와 패스워드를 이용하여 클라이언트가 직접 인증을 수행한다. 클라이언트가 외부 프로그램일 경우 사용하면 안된다(당연)


  • Client credentials : 클라이언트 자신이 관리하는 서버에 접근할 때 사용한다.

OAuth 2.1

  • 금융, 의료 등 보안이 중요한 클라이언트가 추가되었다. 또한, 웹 뿐만 아니라 IOT에서도 인증이 가능하도록 기능이 추가되었다.
profile
Record What I Learned

0개의 댓글