OAuth 2.0, Authorization Grant, Flux Architecture

­이은재 ·2024년 9월 26일

이 글은 멋사 과제용 글입니다.

1. OAuth 2.0

OAuth 2.0은 토큰 기반 인증을 위해 널리 사용되는 오픈 표준이다. 사용자가 자신의 자격 증명을 노출하지 않고도 외부 서비스에 안전하게 액세스를 위임할 수 있게 한다. 대표적으로 구글, 트위터 등의 로그인을 통해 인증을 받을 수 있게 해준다.

OAuth 2.0의 주요 구성 요소

  • 자원 소유자(사용자): 데이터나 자원의 소유권을 가진 사용자

  • 클라이언트(앱): 사용자를 대신하여 자원에 접근을 요청하는 애플리케이션

  • 인증 서버: 사용자의 권한을 확인하고 토큰을 발급하는 서버

  • 자원 서버: 클라이언트가 접근하고자 하는 자원이나 데이터가 위치한 서버


👉 보안과 사용자의 편의성의 균형

#최소 권한의 원칙
사용자나 클라이언트에게 꼭 필요한 범위 내에서만 권한을 부여하는 것이 중요하다. OAuth 2.0의 토큰 발급 과정은 이러한 최소 권한 원칙을 잘 반영한다.

#사용자의 경험 개선
OAuth 2.0을 사용하면 여러 서비스에 간편하게 로그인할 수 있는 Single-Sign-On(SSO) 환경을 구축할 수 있다.

#안전한 인증
OAuth 2.0은 보안 취약점을 줄이고, 토큰을 통한 인증으로 사용자 데이터를 안전하게 보호할 수 있다. 따라서 보안이 중요한 애플리케이션에서는 필수적인 인증 방식이다.


2. Authorization Grant

OAuth 2.0에서 Authorization Grant(인가 코드)는 클라이언트가 액세스 토큰을 받는 방법을 정의하는 중요한 메커니즘이다. 인가 코드 방식에는 다양한 유형이 있다.

  • 권한 부여 코드 방식: 가장 보안이 높은 방식으로, 주로 서버 간 통신에 사용된다. 사용자 인증 후 인가 서버에서 코드를 받아 이를 통해 액세스 토큰을 발급받는다.

  • 암시적 부여 방식: 클라이언트 측에서 직접 액세스 토큰을 발급받는 방식으로, 주로 SPA에서 사용된다.

  • 자격 증명 부여 방식: 사용자의 자격 증명을 직접적으로 사용하는 방식으로, 보안상 권장되지 않으며, 매우 제한적인 경우에만 사용된다.

  • 클라이언트 자격 증명 부여 방식: 서버 간 통신이나 백엔드 서비스 간에 사용되며, 사용자 개입 없이 클라이언트가 자체적으로 토큰을 발급받는다.


👉 유연하고 상황에 맞는 인증 방법 선택

#보안 수준에 따른 선택
권한 부여 코드 방식을 통해 보안이 강화된 인증을 사용하거나, 간단한 암시적 부여 방식을 통해 SPA에서의 사용자 편의성을 높이는 등, 인증 방식은 사용 환경에 맞게 조정해야 한다.

#서버 간 통신 보안
클라이언트 자격 증명 방식을 통해 서버 간 통신에서 사용자 없이 안전하게 인증을 수행할 . 수있다. 이를 통해 백엔트 통신의 보안을 강화할 수 있다.

#실시간 시스템 확장성
인가 코드 방식을 활용해 분산된 시스템에서 유연하게 인증을 처리할 수 있으며, 마이크로서비스 구조에서도 적합하게 사용할 수 있다.


3. Flux Architecture

Flux Architecture는 주로 자바스크립트 애플리케이션, 특히 React 기반의 프론트엔드 개발에서 사용되는 애플리케이션 구조다. Flux는 데이터 흐름을 단방향으로 유지함으로써 애플리케이션의 상태를 더 예측 가능하고 관리하기 쉽게 만들어 준다.

  • Action: 사용자의 상호작용이나 서버 요청에 의해 발생하는 이벤트.
  • Dispatcher: 모든 액션을 중앙에서 관리하고, 이를 스토어에 전달하는 역할.
  • Store: 애플리케이션의 상태를 저장하고 관리하는 곳.
  • View: 스토어의 상태를 받아 사용자에게 보여주는 UI 컴포넌트.

👉 예측 가능한 상태 관리

#단방향 데이터 흐름의 중요성
데이터 흐름이 명확해지면 디버깅이 쉬워지고, 복잡한 상태 관리를 체계적으로 할 수 있다. 이는 애플리케이션의 유지보수성을 크게 높여준다.

#확장 가능성
Flux 패턴을 사용하면 애플리케이션이 커지더라도 상태 관리를 쉽게 확장할 수 있다. 특히 여러 개의 Store를 추가하는 방식으로 규모가 커진 애플리케이션에서도 일관된 데이터 흐름을 유지할 수 있다.

#불변성 관리
상태가 변경될 때마다 이를 추적하고, 변경사항을 예측 가능하게 관리하는 것이 중요하다. Flux는 이러한 불변성 관리를 용이하게 만들어, 상태 변화의 원인을 쉽게 파악할 수 있게 한다.


느낀 점

너무 어렵다..
공부 열심히 해야겠다!

profile
이은재

0개의 댓글