본문 바로가기

전체 글93

스프링 시큐리티 (Spring Security) Email security vector created by macrovector - www.freepik.com 1. 개요 스프링 시큐리티는 서블릿 필터의 집합으로 디스페치 이전에 작동한다. 이 때 구현된 로직에 따라 원치 않는 HTTP 요청을 걸러내어 거절한다. 스프링 시큐리티가 FilterChainProxy라는 필터를 서블릿 필터에 넣어 작동한다. 2. 인증 OncePerRequestFilter 클래스를 상속하여 필터를 생성하고 한 요청당 한 번 실행되도록 한다. 3. 구현 1) 의존성 부여 build.gradle 의 dependencies 에 Spring security 추가 // https://mvnrepository.com/artifact/org.springframework.boot/spring.. 2022. 4. 11.
패스워드 암호화 Email security vector created by macrovector - www.freepik.com 1. UserService 에서 public UserEntity getByCredentials( final String email, final String password, final PasswordEncoder encoder) { final UserEntity originalUser=userRepository.findByEmail(email); //matches 메서드 이용하여 salt를 고려하여 패스워드가 같은지 확인 if(originalUser!=null&&encoder.matches(password, originalUser.getPassword())) { return originalUs.. 2022. 4. 11.
Eclipse IDE 에서 build.gradle 의존성 추가/변경 후 적용 1)문제 사항 JWT를 위해 jjwt 의존성을 추가하였지만 io.jsonwebtoken을 import 할 수 없는 문제 발생 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-s.. 2022. 4. 10.
JWT 생성 및 반환 구현 1) build.gradle 의존성 https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt/0.9.1 메이븐 레파지토리에 직접 들어가보니 취약성이 58개나 발견되지만(!) 우선 실습을 위해 사용한다. build.gradle의 에 다음과 같은 속성을 준다. // https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt implementation group: 'io.jsonwebtoken', name: 'jjwt', version: '0.9.1' TokenProvider 서비스를 다음과 같이 만든다. @Slf4j @Service public class TokenProvider { private static final St.. 2022. 4. 10.
JWT (Json 웹 토큰 인증) 1.Basic 인증 HTTP 요청에 아이디와 비밀번호를 같이 보내는 방식 HTTP 요청 해더의 Authorization 부분에 'Basic :' 를 이어 붙인 뒤, Base64로 인코딩한 문자열을 함께 보냄 * 문제점 : 1) 아이디와 비밀번호 노출 => 따라서 HTTPS와 함께 사용 2) 로그아웃 불가 3) 사용자의 계정 정보가 있는 저장 장소(인증 서버, 인증 DB) 과부하 위험 4) 단일 장애점 문제 : 한 부분 오류시 전체 시스템 가동 불가 2. 토큰 기반 인증 최초 로그인 시 서버가 생성 클라이언트는 이후 요청에 아이디와 비밀번호 대신 토큰을 넘겨줘 자신이 인증된 사용자임을 알림 Authorization 부분에 'Bearer ' 명시 *문제점 : 매번 아이디 비밀번호를 네트워크 전송하지 않아도 .. 2022. 4. 10.
ReactDOM.render 경고 1) 문제 사항 리액트 실행 중 항상 콘솔창에 다음과 같은 에러가 표시되어 있다. Warning: ReactDOM.render is no longer supported in React 18. Use createRoot instead. Until you switch to the new API, your app will behave as if it's running React 17. Learn more: https://reactjs.org/link/switch-to-createroot 이말은 즉, ReactDOM.render가 더이상 18버전에서 지원하지 않으니 createRoot를 대신 사용하라는 뜻이다. 안바꾸면 React 17버전처럼 운영될거라는 말! 2) 해결 방법 index.js를 다음과 같이 변경.. 2022. 4. 9.
프론트엔드와 백엔드 서비스 통합 1) 리액트에서 렌더링이란? ReactDOM에서 컴포넌트의 state 변화를 감지하고 변경된 부분의 HTML을 HTML DOM 트리에 업데이트하여 변경된 결과를 눈으로 확인할 수 있는 것 2) Mounting ReactDOM트리가 존재하지 않는 상태에서 리액트가 처음으로 각 컴포넌트의 render() 함수를 call하여 자신의 DOM트리를 구성 이 과정에서 constructor와 render() 함수 call 마운팅이 마치면 componentDidMount 함수 호출 3) 목표 componentDidMount 함수에 백엔드 API 콜 부분 구현 * 왜 componentDidMount에서 API를 콜할까? - 컴포넌트의 속성이 아직 준비되지 않은 상태일 수 있음으로 이 과정이 다 마친(마운팅이 끝난) co.. 2022. 4. 9.
material-ui/core 설치 문제 1) 문제 사항 책을 이용해 React실습 과정 중 material-ui/core를 이용하기 위해 다음과 같이 material-ui/core를 설치를 시도하였다. npm install @material-ui/core 그치만 왠걸? 설치가 되지 않았고, 작동도 되지 않았다. 아마 버전의 문제로 작동이 되지 않는 듯 하다. 2) 해결 직접 material-ui 사이트를 접속해보니 홈페이지에 떡하니 설치 코드가 적혀있다. https://mui.com/ MUI: The React component library you always wanted MUI provides a simple, customizable, and accessible library of React components. Follow your ow.. 2022. 4. 8.
반응형