Backend/Spring
-
[Spring] Swagger에서 JWT관련 설정하기 (Authorization, ArgumentResolver)Backend/Spring 2023. 5. 27. 15:14
Swagger 설정 관련 포스트 [Spring] Spring Boot 3.x에서 Swagger 설정하기 시작하기 Spring Boot 3.x로 프로젝트를 진행하며 Swagger의 필요성을 느꼈다. Swagger 설정이 간단했던 것으로 알고있어서 금방 끝날거라고 생각했지만 생각보다 고난을 겪었다. 관련 내용을 포스팅한 miraekwak.tistory.com Swagger와 JWT JWT를 사용하여 사용자 인증을 했었기 때문에, 거의 모든 api에서 토큰 검사를 하고 있었다. ArgumentResolver를 통해 들어온 token을 검사하고 token에서 사용자 Id를 가져와 사용자 인증 엔티티로 변환하여 사용하였다. 여기서 필요했던 Swagger 설정에 대해 설명하고자 한다. Swagger Security..
-
[Spring] Spring Boot 3.x에서 Swagger 설정하기Backend/Spring 2023. 5. 27. 15:12
시작하기 Spring Boot 3.x로 프로젝트를 진행하며 Swagger의 필요성을 느꼈다. Swagger 설정이 간단했던 것으로 알고있어서 금방 끝날거라고 생각했지만 생각보다 고난을 겪었다. 관련 내용을 포스팅한 게시물도 적어보여 내가 정리해보려고 한다! Swagger 설정하기 dependency 설정 swagger를 사용하는 방법은 spring fox와 springdoc 두가지가 있다. 이전까지는 springfox를 사용하였었는데 Spring Boot 3.x에서 springfox를 사용하자 404 error가 발생했다. Spring Boot 3.x 버전에서는 무조건 springdoc을 사용해야 한다. 적용할 프로젝트에 따라 dependency가 달라지게 되는데 Spring Boot 3.x의 경우 ap..
-
[Spring] JPARepository에서 Entity join 방법 및 대상 Entity가 아닌 다른 Entity를 반환해야 할 때Backend/Spring 2022. 10. 6. 23:26
JPARepository spring boot JPARepository를 사용하면 Repository를 따로 구현하지 않아도 기본적인 함수는 바로 사용이 가능하고, 조회의 경우 함수명 규칙만 잘 맞추면 함수를 구현하지 않아도 사용이 가능하다. 이때 함수명 규칙으로 불가능한 복잡한 쿼리의 경우 @Query 애노테이션을 사용하여 해결할 수 있다. Entity Relation @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "member_id") private Long id; ... } @Entity public class Organization { @Id @GeneratedVa..
-
[Spring Error] wix-embedded-mysql 사용시 java.sql.sqlsyntaxerrorexception: table 'test-order_mgmt.products' doesn't exist 에러Backend/Spring 2022. 9. 6. 15:28
Error Test를 위한 embedded database를 사용하기 위해 wix-embedded-mysql을 사용하여 구현하였다. maven 의존성 설정 com.wix wix-embedded-mysql 4.6.2 test Test 클래스 @SpringBootTest @TestMethodOrder(MethodOrderer.OrderAnnotation.class) @ActiveProfiles("test") class ProductJdbcRepositoryTest { static EmbeddedMysql embeddedMysql; @BeforeAll static void setUp() { var config = aMysqldConfig(v5_7_10) .withCharset(Charset.UTF8) .wit..
-
[Spring] RequestCacheAwareFilter, ChannelProcessingFilter 사용하기Backend/Spring 2022. 9. 2. 17:49
RequestCacheAwareFilter FilterChainProxy를 구성하는 주요 Security Filter 중 하나로 로그인 성공 이후 가로채어진 사용자의 원래 요청으로 이동하기 위해 사용된다. 익명의 사용자(로그인 안한 사용자)가 보호받는 리소스 페이지에 접근하는 경우 접근 권한이 없기 때문에 AccessDecisionManager에서 접근 거부 예외가 발생함 ExceptionTranslationFilter 접근 거부 예외를 처리함 현재 사용자가 익명 사용자라면, 보호받는 리소스로의 접근을 캐시 처리하고, 로그인 페이지로 이동시킴 로그인이 완료되면 원래 접근하려 했던 캐싱 페이지로 접근할 수 있게 함 private void handleAccessDeniedException(HttpServle..
-
[Spring] Spring Security Architecture에 대해서Backend/Spring 2022. 9. 1. 17:37
Spring Security Architecture Conceptual Architecture 거시적인 관점에서 Spring Security는 웹 요청을 가로챈 후 사용자를 인증하고, 인증된 사용자가 적절한 권한을 지니고 있는지 확인함 AuthenticationManager 사용자 인증 관련 처리 AccessDecisionManager 사용자가 보호받는 리소스에 접근할 수 있는 적절한 권한이 있는지 확인 AuthenticationManager : 사용자 인증과 관련된 처리를 담당 - 인증 Access Decision Manager : 사용자가 적절한 권한을 가지고 있는지 확인 - 인가 FilterChainProxy (Spring Security 필터 체인) Spring Security의 실제적인 구현은 ..
-
[Spring] Spring Security 로그인 계정 추가 및 자동 로그인 기능 설정하기Backend/Spring 2022. 9. 1. 17:08
Spring Security 로그인 Spring Security 시작하기 포스팅에서 자동으로 생성되는 password를 사용하여 로그인 하는 방식 대신 임의적으로 application.yml 파일에 user와 password, 권한 설정을 해주어 로그인할 수 있었다. spring: application: name: spring security 01 thymeleaf: cache: true security: user: name: user password: user123 roles: USER messages: basename: i18n/messages encoding: UTF-8 cache-duration: PT1H server: port: 8080 설정파일에서 security에 user를 추가하는 방식으로..
-
[Spring] Spring Boot Web Mvc에 Spring Security 시작하기Backend/Spring 2022. 8. 30. 21:06
Spring Security Spring Boot 웹 어플리케이션에 적용 가능하며 적은 노력으로 각 상황에 보안을 적용할 수 있다. https://miraekwak.tistory.com/130 [Spring] 웹 어플리케이션 보안 위협 요소 웹 어플리케이션의 주요 보안 위협 요소 인증(Authentication) 절차 마비 인증(Authentication)은 인가(Authorization)와 함께 보안 관련 핵심 개념 중 하나이다. 사용자의 신원을 확인하는 과정은 아이디/패 miraekwak.tistory.com 사용자 인증 및 인가 처리는 기본이며 필요에 따라 커스터마이징이 가능하다. 다양한 확장 기능과 자연스러운 통합이 가능하다. Spring Session 세션 클러스터 기능 추상화 제공 https:..