일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 네트워크 설정
- 자료구조와함께배우는알고리즘입문
- 페이징
- 선형대수
- 리눅스
- 스프링부트핵심가이드
- iterator
- 처음 만나는 AI 수학 with Python
- 자바편
- 코드로배우는스프링부트웹프로젝트
- baeldung
- ㅒ
- resttemplate
- 티스토리 쿠키 삭제
- GIT
- 친절한SQL튜닝
- /etc/network/interfaces
- 알파회계
- 서버설정
- d
- Kernighan의 C언어 프로그래밍
- 데비안
- 스프링 시큐리티
- network configuration
- 목록처리
- 이터레이터
- 구멍가게코딩단
- 처음 만나는 AI수학 with Python
- 코드로배우는스프링웹프로젝트
- 자료구조와 함께 배우는 알고리즘 입문
- Today
- Total
목록Projects/blog (53)
bright jazz music
- 테스트 케이스 개선 로컬에서 테스트 할 때는 굳이 암호화하여 테스트 할 필요 없으므로 평문을 사용하는 PasswordEncoder를 하나 더 생성하여 테스트 해볼 수 있다. 따라서 로컬에서 테스트 할 때는 평문을 사용하는 encoder를 주입하고, 운영에서는 암호화를 사용하는 encoder를 사용하는 것이다. 그렇게 하면 asserEquals()를 사용하여 테스트 할 수 있다. 1.PasswordEncoder 인터페이스 생성 //PasswordEncoder.java package com.endofma.blog.crypto; public interface PasswordEncoder { String encrypt(String rawPassword); boolean matches(String rawPas..
비밀번호가 평문에서 암호로 바뀌면서 기능하지 않는 것들이 있다. 예를 들면 아래와 같이 회원가입을 한 뒤에 평문을 넣어 로그인을 시도하면 실패한다. //AuthServiceTest.java @Test @DisplayName("로그인 성공") void test3(){ //given Signup signup = Signup.builder() .email("catnails@gmail.com") .password("1234") .name("catnails") .build(); authService.signup(signup); Login login = Login.builder() .email("catnails@gmail.com") .password("1234") .build(); //when authService..
비밀번호 저장을 위해 Scrypto 알고리즘을 사용한다. Scrypto를 지원하는 다양한 라이브러리들이 존재한다. 이 프로젝트에서는 Spring security에서 지원하는 Crypto 라이브러리를 사용한다. https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/crypto/scrypt/package-summary.htm org.springframework.security.crypto.scrypt (spring-security-docs 6.0.2 API) package org.springframework.security.crypto.scrypt Classes docs.spring.io https:/..
지난 포스팅에서는 jwt키를 application.yml에 넣어 놓고 불러와서 jwt암호화를 진행하는 과정을 다뤘다. 이번에는 회원 가입을 다룬다. 구체적으로는 아이디와 비밀번호를 입력 받고, 비밀번호를 암호화 해서 DB에 넣는 과정이다. - application.yml 수정(data.sql 입력 되지 않도록) 현재 어플리케이션을 구동하면 data.sql이 자동으로 DB에 입력되도록 되어 있다. 빈 DB 에 테스트 할 수 있도록 application.yml에서 sql 설정을 never로 변경해준다. 사실 이 과정은 오늘 진행할 내용과 관련 없다. 이제 기본적인 회원가입 기능을 만든다. 1. AuthController.java에 회원가입 메서드 생성하기 //AuthController.java //회원가입 ..
지난 번에는 application.yml에 정보를 넣어두고 그 정보를 AppConfig라는 클래스에 바인딩 시키는 과정을 실습하였다. yml의 문법을 사용하여 문자열, 숫자, 해쉬맵 뿐만 아니라 클래스 인스턴스에 바인딩하였다. yml에 정보 기재 AppConfig에 @ConfigurationProperties() +@Data 메인 클래스에 @EnableConfigurationProperties(바인딩 시킬 클래스) 이번에는 지난 번 포스팅의 내용을 참고하여 JWT를 생성하기 위한 key를 application.yml에 작성하고 그것을 AppConfig.java에 바인딩하여 사용하는 과정을 진행한다. private final String KEY = "Kz06PMZdP03FQVS3m8Jg9gKSEQjV4/N..
지난 번 포스팅에서는 jwt를 사용하여 암호화를 하고 그것을 세션으로 이용하는 내용을 다루었다. 따라서 UserController.java와 AuthResolver.java에 동일한 값의 특정 키를 가져와서 jwt를 암호화, 또는 복호화 하는 데 사용했다. AuthResolver.java에서는 복호화하는 데 사용했다. AuthController.java에서는 로그인을 하는 경우에 암호화 하였다. 세션의 경우 일반적으로는 모든 사용자가 같은 키를 사용하게 된다. 사용자별로 세션을 만들어 줄 때마다 키 값이 달라지는 경우 복호화 할 수 없기 때문이다. 키 값은 서버 어딘가에 위치해야만 한다. 지난 번 포스팅에서는 AuthController.java와 AuthResolver.java에 문자열 상수로 저장하였다..
1. 사용할 JWT 라이브러리 선택 JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. jwt.io https://github.com/jwtk/jjwt GitHub - jwtk/jjwt: Java JWT: JSON Web Token for Java and Android Java JWT: JSON Web Token for Java and Android. Contribute to jwtk/jjwt development by creating an account on GitHub. github.com 가장 사용자가 많은 라이브러리를 사용한다. ..
지난 번 포스팅에서는 회원이 로그인을 하면 토큰이 발급되고, 인증이 필요한 페이지로 이동하려 할 때 DB에서 해당 토큰을 검증하고, 이동한 후에는 해당 회원의 primary id를 출력해 주는 과정을 다루었다. //AuthController.java @PostMapping("/auth/login") public SessionResponse login(@RequestBody Login login){ String accessToken = authService.signin(login); return new SessionResponse(accessToken); } ### auth.http POST http://localhost:8080/auth/login Content-Type: application/json ..
이 포스팅에서는 UUID를 통해서 세션 토큰을 발급받고 인증을 요청하는 부분을 진행한다. 로그인 - 토큰 발급 - DB를 통해서 인증을 확인한 뒤 - 인증 관련 페이지로 라우팅 - 로그인하면 응답에 토큰이 날아옴. - 이 토큰을 향후 게시글 쓰기 같은 인증이 필요한 페이지에 진입하기 위해, - header에 Authorization값으로 넣어준다. - 인증이 필요한 해당 요청했을 때 인증이 되고 해당 회원의 primary id를 출력해 준다. - 아마 숫자 1, 또는 2가 결괏값으로 나올 것이다. 0.현황 발급 받은 세션을 보내면 서버에서 검증하는 코드 작성. 현재는 WebMvcConfigurer에 등록한 AuthResolver(implements HandlerMethodArgumentResolver)를..
클라이언트 입장에서는 전송하기 위해 세션(=accessToken)이 필요하다. 현재는 AuthService에서 user.addSession()만 할 뿐 그 세션 값을 가져오지는 않고 있다. 1. User 클래스의 addSession() 메서드가 세션을 반환하도록 설정 //User.java package com.endofma.blog.domain; import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import javax.persistence.*; import java.time.LocalDateTime; import java.util.ArrayList; import jav..