티스토리 뷰

반응형

스프링 시큐리티 완전 처음부터 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, 인증서버, 백엔드개발, 개발블로그

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/03   »
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
글 보관함
반응형