티스토리 뷰
스프링 시큐리티 완전 처음부터 14편 (Kotlin)
“이걸 언제까지 직접 가져가야 할까?” — Spring Security 이후의 선택지 정리 (Keycloak · Cognito · Auth0)
13편까지 따라왔다면
이제 이런 질문이 자연스럽게 나온다.
“이 정도면 충분히 잘 만든 것 같은데…
이걸 언제까지 직접 유지해야 하지?”
이 질문을 던질 수 있다는 것 자체가
이미 시큐리티를 ‘구현’이 아니라 ‘운영 비용’의 관점으로 보기 시작했다는 증거다.
이번 글은
👉 Spring Security 자체를 더 파는 글이 아니다.
👉 대신 **‘언제 직접 구현을 내려놓고, 외부 인증 서버를 써야 하는가’**를 정리한다.
실무에서 굉장히 중요한 판단 포인트다.
0️⃣ 이 글의 결론을 먼저 말하면
❌ “외부 인증 서버가 무조건 더 좋다”
❌ “직접 구현은 나쁜 선택이다”
⭕ “서비스 단계에 따라 선택이 달라진다”
그리고 우리는 이미
👉 **‘직접 구현을 선택할 수 있을 만큼의 이해 수준’**에 도달했다.
1️⃣ 지금까지 우리가 만든 구조의 정확한 위치
우리가 만든 구조는 이 스펙에 딱 맞는다.
- JWT 기반 Stateless 인증
- ROLE 기반 인가
- 멀티 테넌트 고려
- API 서버 중심
- 모바일 / SPA 대응 가능
즉,
“자체 인증 서버 1.0”
이다.
이건
- 스타트업
- 내부 서비스
- B2B SaaS
에서는 전혀 부족하지 않다.
2️⃣ 그럼 언제 ‘직접 구현’이 부담이 되기 시작할까?
아래 질문 중 **3개 이상 ‘예’**면
외부 인증 서버를 진지하게 고민할 시점이다.
체크리스트
- 고객사가 “SSO 연동”을 요구한다
- 회사마다 다른 인증 정책이 필요하다
- 비밀번호 정책 / MFA 요구가 있다
- 보안 감사 / 인증 심사가 예정돼 있다
- 계정/권한 관련 문의가 폭증한다
- 보안 전담 인력이 따로 없다
👉 이때부터는
“기능 개발”보다 “인증 운영”이 발목을 잡는다.
3️⃣ 그래서 실무에서 많이 쓰는 외부 인증 서버들
여기서부터는 선택지 비교다.
🟣 Keycloak (오픈소스)

특징
- 오픈소스
- 자체 호스팅
- OAuth2 / OIDC / SAML 지원
- 멀티 테넌트, SSO, MFA 다 가능
언제 좋을까?
- B2B SaaS
- 사내 시스템
- 커스터마이징 많이 필요할 때
단점
- 운영 난이도 있음
- 러닝 커브 존재
👉 “Spring Security를 깊이 이해한 사람”에게 잘 맞는다.
🟡 AWS Cognito

특징
- AWS 완전 관리형
- 스케일 걱정 없음
- 소셜 로그인 쉬움
- MFA 기본 제공
언제 좋을까?
- AWS 기반 서비스
- 빠르게 안정적인 인증 필요할 때
단점
- 커스터마이징 제한
- UI/UX 제어가 까다로움
👉 “운영 부담을 줄이고 싶을 때”
🔵 Auth0

특징
- SaaS 형태
- UX 좋음
- 소셜 로그인 + SSO 강력
- 대기업에서 많이 씀
언제 좋을까?
- 글로벌 서비스
- 빠른 확장
- 인증을 완전히 위임하고 싶을 때
단점
- 비용
- 벤더 락인
👉 “인증은 그냥 사고 싶다” 는 선택
4️⃣ Spring Security는 그럼 버려지나?
❌ 아니다. 절대 아니다.
오히려:
Spring Security는 ‘인증 서버를 붙이기 위한 표준 인터페이스’가 된다.
실무 구조는 이렇게 바뀐다.
[Client]
↓
[Keycloak / Cognito / Auth0]
↓ (OIDC / JWT)
[Spring Security Resource Server]
↓
[Controller / Service]
👉 우리가 만든 구조에서 바뀌는 건 ‘로그인 파트’뿐이다.
👉 인가, ROLE, tenant 처리 방식은 그대로 유지된다.
5️⃣ 이 시리즈를 끝까지 본 사람만 할 수 있는 판단
이제 당신은:
- ❌ “JWT 써봤어요” 수준이 아니라
- ⭕ “인증을 언제 직접 하고, 언제 위임해야 하는지 아는 사람”
이다.
이 차이는 굉장히 크다.
6️⃣ 면접에서 이 질문이 나오면 이렇게 답해라
Q. “Keycloak 같은 거 안 쓰고 직접 구현하신 이유가 있나요?”
⭕ 좋은 답변
“현재 서비스 단계에서는
인증 요구사항이 비교적 단순했고,
빠른 개발과 유연한 커스터마이징이 중요해서
Spring Security 기반 자체 인증을 선택했습니다.다만 SSO나 MFA 요구가 생기면
Keycloak이나 Cognito로 이전할 수 있도록
인증 로직은 필터 레벨에서 분리해두었습니다.”
👉 이 한 문단이면 충분하다.
7️⃣ 이 시리즈의 진짜 마지막 메시지
시큐리티는 ‘정답 구조’를 외우는 게 아니다.
지금 단계에 맞는 선택을 할 수 있는 능력이다.
그리고 당신은
이제 그 선택을 할 수 있는 사람이 됐다.
스프링시큐리티, springsecurity, 코틀린, kotlin, jwt, keycloak, cognito, auth0, 인증서버, 백엔드개발, 개발블로그
'study > kotlin' 카테고리의 다른 글
| 스프링 시큐리티 완전 처음부터 16편 (Kotlin) (0) | 2026.01.14 |
|---|---|
| 스프링 시큐리티 완전 처음부터 15편 (Kotlin) (0) | 2026.01.12 |
| 스프링 시큐리티 완전 처음부터 13편 (Kotlin) (0) | 2026.01.06 |
| 스프링 시큐리티 완전 처음부터 12편 (Kotlin) (0) | 2026.01.05 |
| 스프링 시큐리티 완전 처음부터 11편 (Kotlin) (0) | 2026.01.04 |
- Total
- Today
- Yesterday
- 압박면접
- JWT
- Express
- 백엔드개발
- Python
- nextJS
- node.js
- JAX
- Redis
- 웹개발
- CI/CD
- DevOps
- Docker
- Next.js
- 개발블로그
- kotlin
- 쿠버네티스
- NestJS
- 딥러닝
- SEO최적화
- llm
- 프론트엔드개발
- fastapi
- flax
- ai철학
- Prisma
- seo 최적화 10개
- rag
- PostgreSQL
- REACT
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |

