반응형
최근 내부 Web 애플리케이션을 로컬에서 테스트하던 중, VPN 환경에 따라 로그인 요청이 400 에러와 함께 invalid id를 반환하는 이상 현상을 발견했습니다. 본 포스트에서는 Azure 환경에서 Site-to-Site VPN과 Azure VPN Client(P2S)의 차이, 그리고 해당 문제가 발생한 원인과 해결 분석 과정을 정리합니다.
문제 상황 요약
- Web 앱 A: 로컬 환경에서 실행
- DB 및 API: Azure 가상 머신 내, Site-to-Site VPN을 통해 접근 가능
- Azure Cache for Redis 사용 중
- **Azure VPN Client(P2S)**를 이용한 접속 시 로그인 정상
- Site-to-Site VPN을 통한 로컬 실행 환경에서는 400 invalid id 발생
1. 네트워크 연결 상태
- Site-to-Site VPN을 통해 DB, API, Redis 모두 접속 가능
- redis-cli, telnet, curl 등을 통해 Redis 접속 테스트도 성공적
즉, 네트워크 단에서는 문제가 없고, 어플리케이션 레벨에서의 인증 또는 세션 관련 문제로 판단하였습니다.
2. 원인 분석: 헤더 및 세션 흐름 분석
VPN 종류 자체는 헤더를 바꾸지 않는다
- Site-to-Site VPN(S2S)과 Azure VPN Client(P2S)는 L3 네트워크 레벨이므로 HTTP Header에 직접 영향을 주지 않음
- 하지만 간접적인 차이로 인해 Header 값, 세션 흐름에 영향을 줄 수 있음
⚠️ 주요 차이로 인한 문제 발생 가능성
| 구분 | 영향 | 가능성설명 |
| Origin/Host 헤더 차이 | ✅ 있음 | 로컬에서 실행한 WebA는 localhost로 접근하므로, Origin 헤더가 달라져 백엔드 인증 실패 가능 |
| 세션 쿠키 누락 | ✅ 있음 | Secure, SameSite 속성 때문에 HTTPS가 아닌 로컬에서는 쿠키가 누락될 수 있음 |
| Redis 세션 키 mismatch | ✅ 있음 | 세션 키가 IP/도메인 기반으로 저장될 경우, 환경에 따라 조회 실패 가능 |
| API 도메인 해석 차이 | ✅ 있음 | VPN Client는 Azure DNS 사용, S2S는 내부 DNS 사용 시 도메인에 따른 세션 쿠키 mismatch 가능 |
3. 실제 확인한 항목
- Redis 접속 여부: redis-cli를 통해 정상 접속, 세션 키 생성은 환경별로 달라졌을 가능성 있음
- 로그인 요청 헤더 비교: DevTools → Origin, Referer, Cookie 등의 값 차이 확인
- API 도메인 비교: 로컬 환경은 IP 기반, VPN Client는 내부 DNS 기반으로 API 호출
- SameSite / Secure 쿠키 정책: 로컬 HTTP 환경에서는 쿠키가 자동 전송되지 않음
🧩 핵심 원인 정리
“VPN 연결 방식이 문제가 아니라, _연결된 환경에서 애플리케이션이 실행되는 주소, 세션 쿠키 처리 방식, API 호출 도메인 차이_가 invalid id 오류를 발생시켰다.”
즉, 서버 측에서 세션이나 인증 토큰을 Redis에서 조회하는 로직이 도메인/포트/쿠키 정책에 영향을 받고 있었던 것입니다.
🛠️ 해결 방안
(1) 테스트 환경 통일
- 로컬에서도 HTTPS로 띄우고, 실제 도메인 기반으로 접근
- ex) https://webA.local.company.net 형태
(2) 세션 쿠키 정책 변경
- 개발 환경에서는 SameSite=None, Secure=false로 설정 (주의: 보안 환경에서는 미사용)
(3) API 호출 도메인 고정
- API URL을 상대경로(/api/login)로 쓰거나, .env에 동일 도메인 설정
(4) 백엔드 세션 키 정책 개선
- Redis에 저장하는 세션 키가 IP/도메인 의존적이지 않도록 개선
정리
Azure 환경에서는 VPN 방식 자체보다는, 그로 인해 Web 클라이언트가 어떤 도메인/프로토콜/헤더로 요청하느냐가 핵심입니다.
로컬 개발 환경에서 문제가 생긴다면, 헤더, 쿠키, 도메인 정책, Redis 세션 저장 방식을 순차적으로 검토하는 것이 빠른 해결의 열쇠입니다.
관련 키워드
- Azure VPN Client 로그인 오류
- Site-to-Site VPN Web 인증 실패
- Redis 세션 invalid id
- SameSite Secure 쿠키 정책
- Azure Cache for Redis 로그인 실패
- React Cookie 전달 안됨
반응형
'CLOUD > AZURE' 카테고리의 다른 글
| Azure Service Principal 생성 및 환경 변수 설정 가이드 (3) | 2025.08.14 |
|---|---|
| Azure Application Gateway에서 HostName 중복과 Any Host 리스너 동작 원리 (0) | 2025.08.10 |
| Azure storage account fileshare SMB 접속 방법 (0) | 2025.07.23 |
| azure action groups (0) | 2025.07.14 |
| azure-104 labs (azure 간단한 실습, 예제) (0) | 2025.07.10 |
댓글