[Network Security] O.Auth 2.0

HyunDong Lee·2021년 4월 27일
0

Network Security

목록 보기
1/1
post-thumbnail

O.Auth

OAuth는 구글로 로그인하기, 카카오톡으로 로그인하기 등등 자주 볼 수 있는 API이다. 로그인과정에서 요구되는 데이터 관리및 보안 관리에 편의성과 비용을 감소 시킨다.
대부분의 서비스는 Authentication과 리소스에 대한 Authorization 기능을 필요로 한다. Access control(= Authentication + Authorization)의 방법중에 하나이다. 많은 대형 서비스에서 많이 사요되고 있다.

O.Auth로 하는 것?

O.Auth2.0은 외부 서비스의 인증 및 권한부여를 관리하는 범용 프레임워크이다. oauth 기반 서비스의 API를 호출을 할 때는 http헤더에 access token을 포함하여 요청을 보내게 된다. 서비스는 access token을 검사하면서 이 요청이 유효한지 판단하여 적절한 결과를 응답한다.

사용자의 입장에서는 OAuth의 권한 요청 절차는 aceess token을 획득하는 것이 가장 주요한 목적이라 할 수 있고, 서비스 제공자 입장에서는 인증된 사용자에게 access가 부여된 부분에 대한 access token을 발급하는 것이 가장 중요한 일이라고 생각된다.

OAuth 주요 4가지 ROLES

  • resourceownerresource owner는 protected resource에 접근하는 권한을 제공한다.
  • resourceserverresource server는 access token을 사용해서 요청을 수신할 때, 권한을 검증한 후 적절한 결과를 응답한다.
  • client는 resource owner의 protected resource에 접근을 요청하는 application이다.
  • authorization server는 client가 성공적으로 access token을 발급받은 이후에 resource owner를 인증하고 obtaining authorization을 부여한다.

OAuth 구조

이미지 출처

  1. client가 resource owner에게 권한 요청을 한다. 이 때 권한 요청은 resource owner에게 직접 하거나, resource server를 통해 간접적으로 이루어질 수 있다.

  2. resource owner가 권한을 허가하면, client는 autorization grant를 발급 받는다.

  3. authorization grant를 받은 client는 최종 목적인 access token을 권한 서버에 요청한다.

  4. 요청을 받은 authorization server는 client가 보내온 권한 증서의 유효성을 검증한다. 유효하다면 access token을 발급하고 결과를 client에 알려준다.

  5. access token을 받은 클라이언트는 resource server에 자원을 요청할 수 있게 된다.

  6. 요청을 받은 resource server는 access token의 유효성을 검증하고 유효하다면 요청을 처리해준다.

    autorization grant
    autorization grant는 client가 resource owner에게 직접 권한 부여를 요청하는 대신, resource owner가 authorization server에서 인증을 받고 권한을 허가한다. 소유자가 권한을 허가하게 되면 authorization code가 발급되고, 이 authorization code를 client에게 전달하게 된다. client는 이 코드를 권한 서버에 보내주면서 자신이 권한 허가를 받았다는 사실을 알리고 access token을 받게 된다. 이 방법은 보안상 이점이 있다. access token을 바로 client로 곧바로 전달하지 않기 때문에 전달과정에서 생길 수 있는 잠재적인 유출 위험을 방지하는데 도움을 준다.

Implicit
Implicit은 Authorization code를 간소화한 절차이다. authorization code 방식에서 access token을 얻기 위한 중간 매개체로 authorization code를 사용했던 것과 달리, 이 방식은 authorization code가 별도로 발급되지 않고 access token이 바로 발급된다. 과정이 짧아졌지만 보안성은 낮아진다.

Client Credentials
Client Credentials 이 방식은 클라이언트 인증방식이라고도 한다. 자원 소유자가 유저가 아닌, 클라이언트인 상황에서 활용되는 방식이다. Client가 관리하는 리소스에만 접근할 경우로 권한이 한정되어 있을 때 활용할 수 있다. 즉 client가 곧 resource owner가 되는 상황이다. client는 자기를 인증할 수 있는 정보를 authorization server에 보내면서 access token을 요청한다.

네트워크 보안 수업을 듣다가 oauth에 대한 수업을 들었는데 도움이 많이 될거 같아 아래 참고링크에 걸어둔 블로그를 보고 그대로 정리했다..

출처

출처

0개의 댓글