Written on
·
2K
0
안녕하세요.
자세한 설명을 통해 security 를 어떻게 활용하면 될 지 잘 알게 됐습니다.
그런데 모놀리식에 적용하기에는 무리가 없어 보이는데 MSA 방식의 시스템에도 강의에 설명된 내용만 가지고
security 적용이 가능한 지가 궁금합니다.
요즘 MSA 공부를 하고 있는데요.
Spring Cloud Gateway 를 이용한 Gateway 서버와 3개 정도의 MSA 서비스로 구성된 토이 프로젝트를 해보고 있는데
이런 구성에서는 Security 를 어떤 방식으로 적용하게 맞는 지 간단하게 조언을 좀 구할 수 있을지요?구글링을 해보니 spring securiy oauth 같은 개념도 있곤 하던데 강의에 배운 내용 위주로
인증/인가를 Gateway 가 있는 MSA 에 적용하기는 불가능 한 것인지 궁금합니다.
그리고 Spring Cloud Gateway 서버에 Spring Security 를 녹여 넣을 수 있는 것인지
아니면 Gateway 와 Security 는 별도로 구성하는 게 맞는 지도 의견 주시면 정말 좋을 듯 합니다.
Answer 1
3
불가능하지는 않습니다.
강의에서의 인증방식은 세션을 이용한 방식입니다.
MSA 아키텍처라 할지라도 각 서버마다 세션을 공유한다면 가능할 것입니다.
세션 클러스터링 혹은 별도의 세션공유서버를 두어서 서버끼리 API 를 호출할 때마다 사용자의 세션여부를 체크해서
동일한 세션인지 아닌지 판단해서 처리하시면 됩니다.
다만 MSA 아키텍처에서 세션방식은 추천하지 않습니다.
세션 자체가 서버 자원을 많이 소모하고 수십대 수백대의 서버끼리 통신할 때의 관리가 쉽지 않습니다.
그래서 일반적으로 인증서버를 별도로 두어서 먼저 인증을 받은 후 token 을 발급받고 API Gateway 를 통과할 때 api Url 과 token 을 가지고 서버에 접속하게 되는데 이때 인증서버에서 발급받은 token 이 유효한 것인지 검증을 받은 후 처리하게 됩니다.
스프링 프로젝트 중 spring cloud security 프로젝트가 있는데 세션을 이용한 방식이 아닌 oauth2, jwt 를 사용해서 MSA 인증처리를 할 수 있도록 제공하고 있습니다.
참고하시면 됩니다