이 글은 멋사 과제용 글입니다.
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는 데이터 흐름을 단방향으로 유지함으로써 애플리케이션의 상태를 더 예측 가능하고 관리하기 쉽게 만들어 준다.
👉 예측 가능한 상태 관리
#단방향 데이터 흐름의 중요성
데이터 흐름이 명확해지면 디버깅이 쉬워지고, 복잡한 상태 관리를 체계적으로 할 수 있다. 이는 애플리케이션의 유지보수성을 크게 높여준다.
#확장 가능성
Flux 패턴을 사용하면 애플리케이션이 커지더라도 상태 관리를 쉽게 확장할 수 있다. 특히 여러 개의 Store를 추가하는 방식으로 규모가 커진 애플리케이션에서도 일관된 데이터 흐름을 유지할 수 있다.
#불변성 관리
상태가 변경될 때마다 이를 추적하고, 변경사항을 예측 가능하게 관리하는 것이 중요하다. Flux는 이러한 불변성 관리를 용이하게 만들어, 상태 변화의 원인을 쉽게 파악할 수 있게 한다.
느낀 점
너무 어렵다..
공부 열심히 해야겠다!