본문 바로가기

1.프로그래밍/Java

(44)
[Spring Security] Spring Security OAuth2.0 Flow OAuth 2.0 (OpenID Authentication) OAuth (OpenID Authentication) 란, 타사의 사이트에 대한 접근 권한을 얻고 그 권한을 이용하여 개발할 수 있도록 도와주는 프레임워크다. 구글, 카카오, 네이버 등과 같은 사이트에서 로그인을 하면 직접 구현한 사이트에서도 로그인 인증을 받을 수 있도록 되는 구조다. 물론 구글에서 로그인을 했다고 해서, 개발한 웹 사이트에 구글 ID와 PW를 그대로 전달해주면 안되므로, Access Token을 발급 받고, 그 토큰을 기반으로 원하는 기능을 구현해야 한다. Access Token은 로그인을 하지 않고 인증을 할 수 있도록 해주는 인증 토큰 정도의 개념이다. 유저 A가 직접 개발한 웹 사이트 X에서 자신의 구글 캘린더에 대한 ..
[Spring Security] SessionManagement Spring Security SessionManagement 생성된 계정으로 서버로부터 인증을 받게 되면 서버에 하나의 세션이 생성한다. 다른 브라우저, 또는 다른 PC에서 같은 계정으로 로그인을 할 경우 이전에 서버에 만들어진 세션을 같이 공유하는 것이 아닌 새로운 세션을 생성하여 사용하게 된다. 동시 세션 관리 @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .sessionManagement() .maximumSessions(1) .maxSessionsPreventsLogin(true) .expiredUrl("/expiredUrl") return http.build(); } ma..
[Spring] Spring 비밀번호 암호화 SHA-256 ~ BCryptPasswordEncoder(MessageDigest, SHA-256, BCryptPasswordEncoder) [Spring] Spring 비밀번호 암호화 SHA-256 ~ BCryptPasswordEncoder(MessageDigest, SHA-256, BCryptPasswordEncoder) 개인의 비밀번호는 매우중요하다. 사람의 습관은 쉽게 잊혀지지 않고, 항상 익숙한 패턴을 생활한다. 즉, 비밀번호도 개인마다 정형화 되어 있다는 뜻이다. 만약, 내가 개발한 서비스에서 비밀번호를 암호화 하지않고 DB에 저장하였다가, DB가 털리게 된다면? 다른 몇몇 사이트 사이트에서 그 비밀번호로 해당 유저를 이용하여 해킹에 위험에 노출되게 된다. 그래서 비밀번호 암호화는 항상 중요하다. 인증(Authentication) 과 해시(Hash) 인증 (authentication) 자신이 누구라고 주장하는 주체(principal..
[Spring] JPA 사용시 Entity Class Setter 메서드에 대한 고찰 [Spring] JPA 사용시 Entity Class 에 대한 고찰(Setter, Wapper Class) https://myeongdev.tistory.com/16 예전에 공부하면서 Entity클래스에 대해서 생각해보고 글을 남긴적이 있다. 하지만, 예전에는 지식과 경험이 부족하여 매우 단순한 지식만 탐구하고 넘어가고 글을 써놓았다. 지금에 와서 다시 배우고 학습하며, 궁금증이 들어 글을 다시 작성하려고 한다. Entity Class란? 실제 DB의 테이블과 매칭되는 클래스이다. 즉, DB의 테이블과 가장 유사하다고 볼 수 있다. 참고문서 hibernate reference docs 그렇다면 Entity Class 는 Data Access Object 로서, Spring MVC 패턴 중 Persiste..
[Spring] Spring MockMvc 정리 (REST API 테스트, Multipart/form-data 테스트) [Spring] Spring MockMvc 정리 (REST API 테스트, Multipart/form-data 테스트, 예외처리) MockMvc란? 실제 객체와 비슷하지만 가짜 객체를 만들어 애플리케이션 서버에 배포하지 않고 Spring MVC 동작을 재현 할 수 있게 해주는 클래스이다. pom.xml org.springframework spring-test test org.junit.jupiter junit-jupiter test org.hamcrest hamcrest-all 1.3 test org.glassfish jakarta.el 3.0.4 org.mockito mockito-core 4.5.1 test org.assertj assertj-core 3.21.0 Controller TestCode ..
[SpringBoot] IntelliJ Thymeleaf 자동 리로드(Live reload) [SpringBoot] IntelliJ Thymeleaf 자동 리로드(Live reload) 공부하다가 발견했는데 신세계다..... 왜 진작 이걸 몰랐을까 application.properties 설정 spring.thymeleaf.cache=false Edit Configuration 이미지와 같이 IntelliJ 상단 RUN > Edit Configuration(구성편집....) 클릭 위의 이미지와 같이 빨간 박스 부분 클래스 및 리소스 업데이트로 변경 후 적용 위와 같이 간단하게 진행하면 Spring 애플리케이션을 재시작 하지 않아도 해당 창을 새로고침으로 확인 가능하다. html or Thymeleaf 작업으로 몇번씩 재시작 할때의 짜증이 사라진다. 물론, 개인의 컴퓨터 성능과 작업의 차이가 있기..
[Spring Boot] Spring Data JPA 기초(코드로 배우는 스프링 부트 웹 프로젝트 ) [Spring Boot] Spring DATA JPA 기초 (코드로 배우는 스프링 부트 웹 프로젝트 ) 해당 글은 코드로 배우는 스프링 부트 웹 프로젝트 - 구멍가게 코딩단(남가람북스)의 책을 참고하여 공부한 것을 정리한 글입니다. JPA(Java Persistence API)는 Java 언어를 통해 데이터베이스와 같은 영속 계층을 처리하고자 하는 API이다. JPA를 이해하기 위해서 우선저으로 ORM(Object Relational Mapping)이라는 기술을 알아야 한다. ORM 이란? ORM(Object Relational Mapping)이란 객체지향 패러다임을 관계형 데이터베이스에 보존하는 기술이다. 패러다임 입장에서 생각하자면 객체지향 패러다임을 관계형 패러다임으로 매핑(mapping)해주는 개..
[Java] Java Synchronized 란? (Java 동기화) [Java] Java Synchronized 란? (Java 동기화) Synchronized 란? 먼저 Synchronized란 한글로 번역하면 동기화라는 의미를 갖는 단어이다. Synchronized (동기화)라는 뜻의 사전적 정의는 시스템을 동시에 작동시키기 위해 여러 사건들을 조화시키는 것을 의미한다. 라고 나와있다. 위의 사전적 정의만으로 동기화에 대한 이해가 확실이 되었다면, 이 글을 보지 않을까 싶다. 만일 JavaScript를 다루면서 AJax통신에 대해서 다뤄 보았다면 이해가 더 잘될꺼라 생각된다. AJax(Asynchronous JavaScript And XML)란 웹의 비동기적 통신을 위한 기술이다. 여기서 비동기적 통신의 의미는 만약, 우리가 웹사이트를 이용할 경우 다양한 기능을 사용..

728x90
반응형