Spring Boot 기반으로 개발하는 Spring Security : SecurityContextHolder, SecurityContext
2023. 4. 25. 21:57
무조건 따라하기/Spring Boot 기반 Security
SecurityContext • Authentication 객체가 저장되는 보관소로 필요 시 언제든지 Authentication 객체를 꺼내어 쓸 수 있도록 제공되는 클래스 • ThreadLocal 에 저장되어 한 쓰레드 내에서 참조가 가능하다. • 인증이 완료되면 HttpSession 에 저장되어 어플리케이션 전반에 걸쳐 전역적인 참조가 가능하다 SecurityContextHolder SecurityContext을 감싸고 있는 클래스로 SecurityContext를 저장하는 방식이 4가지가 있다. MODE_THREADLOCAL : 스레드당 SecurityContext 객체를 할당, 기본값 MODE_INHERITABLETHREADLOCAL : 메인 스레드와 자식 스레드에 관하여 동일한 SecurityCo..
Spring Boot 기반으로 개발하는 Spring Security : 인증 개념 이해 - Authentication
2023. 4. 20. 22:16
무조건 따라하기/Spring Boot 기반 Security
Authentication이란? 스프링 시큐리티에서 Authentication은 사용자의 인증 정보를 나타내는 인터페이스이다. 스프링 시큐리티는 Authentication 객체를 만들고, 이를 보유하고, 인증 정보를 검증하고, 사용자 인증 정보를 유지 관리하고, 사용자 권한을 부여하기 위해 사용된다. 이러한 인증 과정은 보안에 중요한 역할을 한다. 인증 시 id 와 password 를 담고 인증 검증을 위해 전달되어 사용 되며, 인증이 성공하면 사용자는 시스템에 대한 액세스 권한을 부여받고 SecurityContext 에 저장되어 전역적으로 참조가 가능하다 Authentication 인터페이스의 구조는 아래와 같다. principal : 사용자 아이디 혹은 User 객체를 저장 credentials : ..
[java/spring] @Transactional 대해서
2022. 6. 22. 17:57
몰아 넣기
# Transactional 이란? 트랜잭션은 우리말로 ‘거래’라는 뜻을 갖고 있으며, 더 이상 쪼갤 수 없는 최소단위의 작업 또는 모두 저장되거나, 아무 것도 저장되지 않거나를 보장한다. Transactional을 왜 사용하는지 먼저 간단한 예시를 들어보겠다. 🔍 아래 표와 같이 FAMILY라는 테이블에 데이터가 저장되어있고 조회를 할 경우 정확한 데이터가 출력이 되어야합니다. idnameage 1 나 28 2 아빠 55 3 엄마 50 4 남동생 26 5 여동생 25 6 할아버지 96 🔍 돈거래로 비유를 하면 A씨의 계좌에는 1000원이 있고 B씨 계좌에는 0원이 있다고 가정하자 A씨가 B씨에게 1000원을 계좌이체를 했고 B는 1000원을 출금하는 상황이다. 아래 이미지와 같이 이체과정에서 실패를 했..
[java/spring] 스프링시큐리티에서 세션 안받아지는 CORS 문제 해결하기
2022. 6. 20. 16:06
몰아 넣기
#들어가는 말 스프링시큐리티를 이용해 세션방식으로 로그인을 구현한다면 프론트와 서버가 합쳐져있는 프로젝트라면 CORS 문제가 없어 세션이 자동으로 쿠키에 저장이 된다. 하지만 프론트를 나누기 시작 하면 CORS 문제로 세션이 받아지지도 않고 자동으로 쿠키에 저장이 되지 않는다 그 문제를 해결할 것이다. 스프링시큐리티 GitHub - whitewise95/TIL: Today I Learned Today I Learned. Contribute to whitewise95/TIL development by creating an account on GitHub. github.com 세션방식 GitHub - whitewise95/TIL: Today I Learned Today I Learned. Contribute..
[java/spring]SpringSecurity(스프링시큐리티)란?
2022. 6. 19. 19:16
몰아 넣기
들어가는 글 스프링 시큐리티는 책을 보고 한번 따라서 해보고 어렵지 않다라고 생각하고 넘어갔지만 ... 이번 항해99 프로젝트에서 쓰게되었는데 모든 로직이 스프링 시큐리티에 맞춰있지 않은 상태에서, 시큐리티를 넣었더니 생각보다 어려운 프레임워크라는 걸 알게 되었다. 그래서 스프링 시큐리티에서 공부하게 되었고 정말 어려운 프레임워크라는 걸 인지했다. 생각보다 시큐리티 공식 문서가 번역기로 돌려서 보면 볼만하다. Spring Security Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real..
[java/Spring]controller에서 데이터 바인딩하는 방법
2022. 6. 19. 19:14
몰아 넣기
# 들어가는 글 이번에 프로젝트를 하면서 컨트롤러에서 데이터를 바인딩하는방법을 @RequestBody 및 @PathVariable만 주로 썼지만 다른 방법도 있다는 것도 공유하고싶었다 # @RequestBody @RequestBody는 클라이언트 측에서 보낸 데이터를 Java 코드에서 사용할 수 있는 오브젝트로 만들어 받을 수 있습니다. HTTP 요청 본문(JSON 및 XML 등)을 Java 오브젝트로 변환하는 것입니다. HTTP 요청 본문 데이터는 Spring에서 제공하는 HttpMessageConverter를 통해 타입에 맞는 객체로 변환됩니다. @PostMapping("/blog") public Long blogWrite(@RequestBody RequestBlogDto blog) { return ..
[java/Spring] Spring Boot 프로젝트 외부 경로 파일 접근
2022. 6. 19. 19:13
몰아 넣기
스토리 문제발생 전 이미지를 업로드하는 기능을 추가했다. /static/images 폴더 안에 이미지를 추가한다. 리눅스 환경 서버에 배포 문제발생 jar 파일로 올리기는 도중에 갑작이 식은 땀이 흘렀다. jar 파일이기에 resources/static/image 경로를 못찾는다. 아~ 새로운 경로에 만들고 절대 경로로 이미지를 띄어야지 생각해서 실행함 안됨 문제 해결 지인 2명에게 물어보기도 하고 이리저리 검색 해도 해결 못함 .... 그러다가 갑작이 자신이 쓴 이미지 업로드 코드인데 한번 참조해봐라 함 업로드 경로가 누가봐도 서버에 톰캣을 설치후 톰캣 경로에 업로드하는 코드네 ㅠㅠ....하다가 앗?! 나는 내장톰캣 내장톰캣, 업로드, 이미지, 경로 라는 키워드로 서치중 Spring Boot 프로젝트 ..
[java/Spring]@Scheduled에 대해서
2022. 6. 19. 19:11
몰아 넣기
@Scheduled 이란? 주기적인 작업이 있을 때 @Scheduled 애노테이션을 사용하면 쉽게 적용할 수 있다. 특정시간 혹은 몇분 혹은 몇시간마다 동작해는 스케쥴러를 구현 사용 방법 스케쥴러를 적용하고 싶은 메소드에 @Scheduled 애노테이션을 명시해주면된다. fixedRateString과 initialDelay는 잠시 무시해도 좋다. @Scheduled(fixedRateString = "5", initialDelay = 3000) private void scheduleTest() { logger.error("hello jeong-pro"); } application(main메소드클래스)에 @EnableScheduling 애노테이션으로 스케줄러를 사용한다고 알려준다. @EnableScheduli..