- [로드맵] 인증 및 권한 부여 메커니즘2024년 11월 23일 18시 26분 02초에 업로드 된 글입니다.작성자: do_hyuk
Authentication
API 인증은 API에 액세스하려는 클라이언트의 신원을 확인하고 권한이 있는 사용자 또는 애플리케이션만 API 리소스와 상호 작용할 수 있도록 하는 프로세스이다. 일반적인 방법으로는 API 키, OAuth 2.0 JSON 웹 토큰(JWT), 기본 인증 및 OpenID Connect가 있다. 이러한 기술은 간단한 토큰 기반 접근 방식에서 인증과 권한 부여를 모두 처리하는 보다 정교한 프로토콜에 이르기까지 복잡성과 보안 수준이 다양하다. API 인증은 민감한 데이터를 보호하고, 무단 액세스를 방지하고, 사용 추적을 가능하게 하며, 리소스 액세스에 대한 세부적인 제어를 제공할 수 있다. 인증 방법의 선택은 보안 요구 사항, 클라이언트 유형, 구현 용이성 및 확장성 요구 사항과 같은 요인에 따라 달라진다. 강력한 API 인증을 구현하는 것은 현대적이고 상호 연결된 소프트웨어 생태계에서 웹 서비스와 애플리케이션의 무결성, 보안 및 제어된 사용을 유지하는데 중요하다.
JWT
JWT(JSON Web Token) 는 상사자 간에 JSON 객체로 정보를 안전하게 전송하기 위한 개방형 표준이다. 헤더(서명에 사용되는 토큰 유형과 알고리즘 지정), 페이로드(전송되는 클레임 또는 데이터 포함), 서명(토큰의 무결성과 진위성을 확인하는데 사용)의 세 부분으로 구성되어있다. JWT는 일반적으로 인증 및 권한 부여 목적으로 사용되어 사용자가 웹 애플리케이션과 API에서 신원과 권한을 안전하게 전송하고 검증할 수 있다. JWT는 컴팩트하고 독립형이며 HTTP 헤더에서 쉽게 전송할 수 있어 최신 웹 및 모바일 애플리케이션에서 인기가 있다.
OAuth
OAuth는 타사 애플리케이션이 자격 증명을 노출하지 않고도 사용자의 리소스에 액세스할 수 있도록 하는 권한 부여를 위한 개방형 표준이다. 사용자가 권한을 부여한 후 액세스 토큰을 발급하여 애플리케이션이 사용자를 대신하여 리소스 서버와 상호 작용하는 데 사용된다. 이 프로세스에는 리소스 소유자(사용자), 리소스 서버(데이터를 보관), 권한 부여 서버(토큰을 발급)가 포함된다. OAuth는 보안 토큰 기반 액세스 관리를 가능하게 하며, 일반적으로 소셜 미디어 계정이나 클라우드 스토리지와 같은 서비스와 상호 작용할 수 있는 권한을 애플리케이션에 부여하는 데 사용된다.
Basic Authentication
기본 인증은 HTTP 프로토콜에 내장된 간단한 HTTP 인증 체계이다. HTTP 헤더에 base64 형식으로 인코딩된 사용자 자격 증명(사용자 이름과 비밀번호)을 전송하여 작동한다. 클라이언트가 인증을 요구하는 서버에 요청을 하면 서버는 401 상태 코드와 "WWW-Authenticate" 헤더로 응답한다. 그런 다음 클라이언트는 "Basic"이라는 단어 뒤에 base64로 인코딩된 "username:password" 문자열을 포함하는 Authorization 헤더와 함께 요청을 다시 전송한다. 구현하기 쉽지만 기본 인증에는 상당한 보안 제한이 있다. 자격 증명은 기본적으로 일반 텍스트로 전송되고(base64는 쉽게 디코딩됨) 암호화를 제공하지 않는다. 따라서 전송 중에 자격 증명이 보호되도록 HTTPS 연결을 통해서만 사용해야 한다. 단순성과 고급 보안 기능이 부족하기 때문에 기본 인증은 일반적으로 간단하고 위험이 낮은 시나리오나 대체 메커니즘으로만 권장된다.
Token Authentication
토큰 기반 인증은 사용자가 신원을 확인하고 그 대가로 고유한 액세스 토큰을 받을 수 있는 프로토콜이다. 토큰의 수명 동안 사용자는 동일한 웹페이지, 앱 또는 동일한 토큰으로 보호되는 리소스로 돌아갈 때마다 자격 증명을 다시 입력할 필요 없이 토큰이 발급된 웹사이트나 앱에 액세스한다. 인증 토큰은 스탬프가 찍힌 티켓처럼 작동한다. 사용자는 토큰이 유효한 한 액세스 권한을 유지한다. 사용자가 로그아웃하거나 앱을 종료하면 토큰이 무효화된다. 토큰 기반 인증은 기존의 비밀번호 기반 또는 서버 기반 인증 기술과 다르다. 토큰은 두 번째 보안 계층을 제공하며 관리자는 각 작업과 트랜잭션을 자세히 제어할 수 있다.
Cookie Based Auth
쿠키 기반 인증은 웹 애플리케이션에서 사용자 세션을 유지하는 방법이다. 사용자가 로그인하면 서버는 세션을 생성하고 고유 식별자(세션 ID)를 쿠키로 클라이언트에 보낸다. 이 쿠키는 이후의 모든 요청과 함께 전송되어 서버가 사용자를 식별하고 인증할 수 있도록 한다. 실제 세션 데이터는 일반적으로 서버에 저장되며 쿠키는 이 데이터에 액세스하는 키 역할을 한다. 이 접근 방식은 서버 측에서 상태가 유지되며 기존 웹 애플리케이션에 적합하다. 구현이 비교적 간단하고 브라우저에서 기본적으로 지원된다. 그러나 쿠키 기반 인증은 교차 출처 요청과 관련하여 문제에 직면하고 적절하게 보안되지 않으면 CSRF 공격에 취약할 수 있으며 최신 단일 페이지 애플리케이션이나 모바일 앱에 적합하지 않을 수 있다. 이러한 제한에도 불구하고 특히 서버 렌더링 웹 애플리케이션의 경우 여전히 일반적인 인증 방법이다.
OpenID
OpenID는 사용자가 ID 공급자(IdP)가 관리하는 단일 자격 증명 세트를 사용하여 여러 웹사이트와 애플리케이션에 로그인할 수 있도록 하는 분산 인증을 위한 개방형 표준이다. 이를 통해 사용자는 외부 서비스를 통해 자신의 ID를 인증하여 로그인 프로세스를 간소화하고 여러 사용자 이름과 비밀번호의 필요성을 줄일 수 있다. OpenID는 일반적으로 OAuth 2.0과 함께 작동하여 사용자가 보안을 유지하면서 데이터에 대한 액세스를 허용할 수 있도록 한다. 이러한 접근 방식은 사용자 편의성을 향상시키고 다양한 플랫폼에서 ID 관리를 간소화한다.
SAML
보안 어설션 마크업 언어(SAML)는 단일 로그인(SSO) 및 ID 페더레이션에 사용되는 XML 기반 프레임워크로, 사용자가 한 번 인증하고 여러 애플리케이션이나 서비스에 액세스할 수 있도록 한다. ID 공급자(IdP)와 서비스 공급자(SP) 간에 인증 및 권한 부여 데이터를 교환할 수 있다. SAML 어설션은 사용자 ID 정보와 속성을 포함하는 XML 문서이며, 인증 자격 증명과 권한을 전달하는 데 사용된다. 조직은 SAML을 구현함으로써 사용자 관리를 간소화하고, 중앙 집중식 인증을 통해 보안을 강화하고, 여러 시스템에서 여러 로그인이 필요 없도록 하여 사용자 경험을 간소화할 수 있다.
'백엔드' 카테고리의 다른 글
[로드맵] Caching (0) 2024.11.25 [로드맵] API 설계 원칙 (0) 2024.11.24 [로드맵] API 접근 방식 (0) 2024.11.21 [로드맵] Learn about APIs (0) 2024.11.20 [로드맵] RDB (1) 2024.11.19 댓글