-
Microservice에서 Spring security 문제(1)개발에 대한 깊은 고찰 2023. 2. 6. 06:32
단일 서비스가 아닌 마이크로서비스에서의 인증과 인가의 문제는 상당히 까다롭다.
특정서비스에서 인증인가의 정보를 다른 서비스에도 공유하여야 한다는 것이다.
Spring Security를 사용한다면, 크게 Session과 token으로 인증인가를 처리한다.
1. Session
세션의 경우에는 세션의 공유를 할 외부 스토리지를 두고 공유하는 시스템을 구축하여 해결 할 수 있다.
이것을 Session Clustering 이라고도 한다.
내 의견을 말하자면, 성능적으로는 좋지 않다. 외부 스토리지가 필요하다. 통신의 횟수로만 봐도 무척이나 많아지게 되고,
또한 각각의 독립된 server instance에서 인증인가에 관련된 중복 코드의 양이 무척이나 많아지게 된다.
2. Access Token
Client가 서버로부터 발급받은 Access Token을 담아 요청을 보내면 서버에서는 해당 토큰을 검증하여 해당 요청을 처리할 것인지를 판단한다. 키값만 알고 있다면 간단하게 유효성 검사를 할 수 있기에 매우 실용적이다
Session에 비해 토큰 발급, 유효성 검사, 또는 서버에서 클라이언트 강제 로그아웃 처리 등은 추가적으로 작업이 필요하다는 단점이 있지만 여러 서버를 운용할 때 클라이언트에 대한 인가 처리를 비교적 쉽게 처리할 수 있다.
(또한 Session과 같이 Cookie를 사용하지 않기 때문에 CSRF에 대한 걱정도 덜 수 있다)
나의 경우에, Access Token 방식을 채택하였고, Spring Cloud를 활용하여 MSA 구성을 하는 중이다. 이 경우에 어떠한 인증인가 문제가 발생하였는지 2장에서 설명하려고 한다.
참고
'개발에 대한 깊은 고찰' 카테고리의 다른 글
Microservice에서 Spring security 문제(2) (0) 2023.02.06 @RequestParam에 대한 고찰 (1) (0) 2023.01.16 개발 3개월차의 JPA와 Native SQL에 대한 고찰(2) (2) 2023.01.09 개발 3개월차의 JPA와 Native SQL에 대한 고찰(1) (2) 2023.01.09 DTO 갯수를 줄이기 위한 아이디어 (0) 2022.11.02