보안 웹 애플리케이션을 구축 할 때 올바른 인증 메커니즘을 선택하는 것이 중요합니다. 오늘날 우리는 널리 사용되는 두 가지 접근 방식을 탐색하고 있습니다 : 세션 기반 인증 및 JSON Web Tokens (JWTS) . 워크 플로, 장점 및 트레이드 오프를 이해함으로써 응용 프로그램에 가장 적합한 사람을 결정할 수 있습니다.
세션 기반 인증
세션 기반 인증이 작동하는 방법은 다음과 같습니다.
-
로그인 및 세션 제작 :
- 사용자는 로그인 자격 증명을 서버로 보냅니다.
- 서버는이를 확인하고 유효한 경우 세션을 만듭니다.
- 세션 데이터 (예 : 사용자 ID, 만료 시간)는 데이터베이스 또는 Redis와 같은 캐시에 서버에 저장됩니다.
-
세션 ID :
- 서버는 일반적으로 쿠키로 고유 한 세션 ID를 클라이언트에게 보냅니다.
-
후속 요청 :
- 클라이언트는 각 요청에 따라 세션 ID 쿠키를 자동으로 보냅니다.
- 서버는이 ID를 사용하여 세션 데이터를 검색하고 사용자를 인증합니다.
주요 혜택 :
-
쉬운 취소 : 세션 데이터를 삭제하여 언제든지 세션을 무효화 할 수 있습니다.
-
중앙 집중식 보안 : 민감한 정보는 서버에 유지됩니다.
도전 :
-
분산 시스템 : 다중 서버 환경에서 모든 서버는 동일한 세션 데이터에 액세스해야하므로 Redis와 같은 중앙 집중식 세션 저장소가 필요합니다.
-
추가 대기 시간 : 페치 세션 데이터는 각 요청에 오버 헤드가 추가됩니다.
JWT 기반 인증
jwts는 다른 접근 방식을 취합니다 :
-
로그인 및 토큰 생성 :
- 사용자는 로그인 자격 증명을 서버로 보냅니다.
- 서버는 서버를 확인하고 서명 된 JWT가 포함 된 사용자 데이터를 생성합니다.
- 클라이언트는 JWT를 저장합니다 (예 : 로컬 스토리지 또는 쿠키에).
-
후속 요청 :
- 클라이언트는 JWT를 요청 헤더로 보냅니다.
- 서버는 토큰의 서명을 확인하고 인증을 위해 데이터를 사용합니다.
주요 혜택 :
-
상태가없고 확장 가능 : 세션 데이터가 서버에 저장되지 않으므로 JWT가 수평 확장 가능한 응용 프로그램에 이상적입니다.
-
서비스 간 호환성 : 마이크로 서비스 아키텍처에서 서비스는 인증 서비스를 쿼리하지 않고 확인 된 JWT의 데이터를 신뢰할 수 있습니다.
도전 :
-
토큰 만료 : 도난당한 경우 JWT는 만료 될 때까지 유효합니다.
-
보안 트레이드 오프 : 서버는 보안을 개선하기 위해 새로 고침 토큰과 같은 메커니즘을 구현해야합니다.
JWT 보안 : 올바른 서명 알고리즘 선택
-
hmac : 대칭 키는 서명 및 확인에 사용됩니다. 간단하지만 키를 공유해야하므로 위험을 초래할 수 있습니다.
-
rsa/ecdsa : 비대칭 키는 개인 키 표시가 토큰을 보장하고 공개 키는이를 확인하여 분산 시스템의 보안을 향상시킵니다.
각 방법을 사용하는시기
세션 기반 인증 :
- 즉각적인 세션 취소가 필요할 때 이상적입니다.
- 중앙 집중식 데이터 저장소가있는 응용 프로그램에 적합합니다.
- 는 서버에 민감한 데이터를 유지하여 보안을 향상시킵니다.
JWT 기반 인증 :
- 무국적, 확장 가능한 아키텍처에 가장 적합합니다.
- 마이크로 서비스 또는 타사 서비스와 인증 데이터를 공유 할 때 유용합니다.
- 보안 및 사용자 경험의 균형을 위해 새로 고침 토큰과 jwts 쌍.
궁극적으로, 귀하의 선택은 응용 프로그램의 아키텍처, 스케일링 요구 사항 및 보안 요구에 따라 다릅니다. 세션이나 JWT를 사용하든 이러한 메커니즘을 이해하면 안전하고 원활한 사용자 경험이 보장됩니다.