Open Junobee25 opened 8 months ago
Rest API, GraphQL, grpc
https://www.popit.kr/graphql-%EA%B7%B8%EB%A6%AC%EA%B3%A0-msa/
gateway-mvc
vs gateway-webflux
tomcat
vs netty
시큐리티 기본 logout으로 /auth/logout 사용 중인데 API Gateway사용할수있는지
기존 모놀리식 : login 시 http header에 jwt정보 생성됨 -> jwtauthenticationFilter를 통해 header검사
마이크로 서비스 : login 시 http header에 jwt정보 생성됨 -> api gateway에서 filter를 통해 검증 (기존의 필터는 삭제하고 api gateway 서비스에서만 filter를 해주면됨)
jwt db에는 잘 저장되지만 인증이 안됨
filter에서 loadUserByMail을 잘 못가져오는 문제
그래서 Authentication 이 자꾸 null
UserDetails userDetails = userDetailsService.loadUserByUsername(jwtService.getEmail(token));
에서 아래와 같이 변경
UserAccount userAccount = userAccountService.loadUserByEmail(jwtService.getEmail(token));
이유 💯 사용자 정보를 가져오는 방식은 서비스 레이어에서 다양하게 처리될 수 있습니다. UserDetailsService 인터페이스를 구현하여 Spring Security에서 제공하는 loadUserByUsername 메서드를 사용하는 것은 일반적인 방법입니다. 이렇게 하면 Spring Security와의 통합이 원활해집니다. 그러나 필요에 따라 직접 서비스 레이어에서 사용자 정보를 가져오는 것도 가능합니다.
따라서 userAccountService.loadUserByEmail(jwtService.getEmail(token))과 같이 직접 서비스 레이어의 메서드를 호출하여 사용자 정보를 가져오는 것도 가능합니다. 다만, 이 경우에는 Spring Security와의 통합이 좀 더 수동적으로 이루어져야 하므로 주의가 필요합니다. 또한, 서비스 레이어에서 사용자 정보를 가져오는 메서드를 구현할 때는, 이메일이나 다른 식별자를 기반으로 사용자를 찾고, 그에 맞는 사용자 정보를 반환하는 로직을 구현해야 합니다.
4 Rules of RESTful API : https://sanjimoh.medium.com/grading-your-apis-rest-conformance-7984684430a
API GateWay
Netflix Eureka
서비스 구성 요소 :