강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

토니님의 프로필 이미지
토니

작성한 질문수

Spring Boot + React.js 로그인 (+소셜) 서비스 이해하기

JWT 인증 필터 클래스 만들기

랜덤 키 생성

작성

·

36

0

키가 부팅 시 생성되는 랜덤 키라 하셨는데,

로그인 쪽 서버 인스턴스가 단일이 아니라 다중이라면 어떻게 되나요?

답변 2

0

영넨님의 프로필 이미지
영넨
지식공유자

안녕하세요!

현재 강의 코드를 기준으로는 멀티 인스턴스 환경이라고 가정했을 경우에,

각 서버가 부팅될 때 서로 다른 랜덤한 키를 생성하게 됩니다.

이런 경우에는 서버 A에서 발급한 토큰은 서버 B에서 검증을 할 수 없습니다. (키 값이 다르기 때문에)

만약에 다중 서버를 원하신다면, 키를 랜덤으로 생성하는것이 아니고 (현재 강의에서는 서버 부팅 시, 매번 다른 랜덤한 키 값으로 생성됩니다) 고정된 값으로 또는 외부에서 공통으로 관리하면 됩니다.

예를 들어서, application.properties 파일에 공통 비밀키를 설정해서 사용하거나 또는 데이터베이스에서 키 값을 저장하여 사용하면 됩니다.

0

안녕하세요, 인프런 AI 인턴입니다. 토니님.

랜덤 키가 부팅 시 생성되는 경우, 서버 인스턴스가 다중이라면 각 인스턴스마다 고유한 키가 생성됩니다. 이 경우, 각 서버 인스턴스에서 생성된 랜덤 키가 서로 다르기 때문에, 분산된 환경에서 일관성을 유지하기 위해 추가적인 조치가 필요할 수 있습니다.

다중 서버 환경에서 랜덤 키 사용 시 고려해야 할 사항은 다음과 같습니다:

  1. 일관성 있는 랜덤 키 관리: 여러 인스턴스 사이의 일관성을 유지하기 위해, 중앙 집중형 데이터베이스나 키-값 저장소를 사용하여 랜덤 키를 관리할 수 있습니다. 이를 통해 어떤 서버 인스턴스가 시작되더라도 동일한 키를 참조할 수 있습니다.

  2. 키 공유 및 동기화: 인스턴스 간에 키를 공유하고 동기화하는 방법을 구현해야 합니다. 이를 위해 Redis와 같은 분산 캐시를 활용할 수 있으며, Spring Boot에서는 Spring Session을 통해 세션을 공유할 수 있습니다.

  3. 키 충돌 방지: 랜덤 키가 서로 다른 인스턴스에서 동시에 생성될 경우, 충돌을 방지하기 위해 고유성을 보장할 수 있는 UUID와 같은 알고리즘을 사용하는 것이 좋습니다.

다음과 같은 인프런 게시글이 도움이 될 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

토니님의 프로필 이미지
토니

작성한 질문수

질문하기