목록Spring Security (6)
Day 개발 기록
이제 시큐리티 설정 및 JWT 토큰 발행과 구현은 모두 끝났다. 이번 포스트에서는 테스트를 위한 controller와 service를 만들고 postman을 통해 테스트해보도록 하겠다. service 패키지를 만들고, MemberService.java클래스를 만든다. 그리고 web패키지 아래에 dto 패키지를 만들고 MemberSaveRequestDto와 MemberRequestDto를 만든다. MemberSaveRequsetDto.java @Getter @NoArgsConstructor public class MemberSaveRequestDto { private String email; @Setter private String password; public Member toEntity() { retu..
이번 포스트 에서는 jwt 토큰을 발행해보고 인증하는 로직을 구현해겠다. 먼저 Application.java 에 비밀번호 암호화해줄 빈을 등록한다. Application.java @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Bean public BCryptPasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); } } config 패키지 밑에 jwt 패키지를 생성한다. 그리고 하위에 JwtProperties , JwtTokenPr..
먼저, member 패키지를 만들고 Member.java 와 MemberRepository 를 만든다. Member.java @Getter @NoArgsConstructor @AllArgsConstructor @Builder @Entity public class Member implements UserDetails { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String email; private String password; @ElementCollection(fetch = FetchType.EAGER) @Builder.Default private List roles = new ArrayList(); ..
IDE : IntelliJ https://start.spring.io/ 에서 프로젝트를 다음과 같이 생성해준다. 스프링 버전은 2.7.8로 해주었다. build.gradle 에 dependancy는 다음과 같이 설정해준다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.h2database:h2:1.4.197' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnl..
😄 세션기반 인증 실제 인증정보는 서버에 저장된다. 사용자가 로그인하면 해당 인증정보를 서버의 세션저장소에 저장한다. 이때, 고유 세션값인 SessionId를 발급해줘서 이를 쿠키형식으로 저장한다. Session ID는 브라우저 단위로 저장되고, 브라우저 종료 시 제거된다. 장점 세션은 쿠키헤더에 세션ID만 넣어보내면 되므로 트래픽도 적다. 서버에서 인증정보를 관리하므로 보안 측면에서 유리하다. (탈취당하더라도, 세션을 무효처리하면 됨) 단점 한 서비스가 아닌 여러서비스에서 요청을 처리할때 문제가된다. 브라우저별로 SessionId가 발급되므로 세션 불일치 문제를 겪게되기때문이다. 해결방안 Sticky Session, Session Clustering, 세션 스토리지 외부 분리 😀 JWT 기반 인증 인증..
1. 스프링 시큐리티를 사용하여 회원가입과 로그인을 구현하려 할때, userRepository.save(user) 까지 하면 회원가입은 잘 된다. 그러나 이렇게 하면 패스워드가 암호화가 되지않아 시큐리티 로그인이 되지않는다. 따라서 BCryptPasswordEncoder 를 사용하여야 한다. 2. +BCryptPasswordEncoder 란 ? https://kimvampa.tistory.com/129 3. 구현 Controller에 Autowired를 이용해 BCryptPasswordEncoder 를 의존성 주입한다. raw password를 get하여 BCryptPasswordEncoder 의 encode를 통해 암호화한 후 다시 set해준다.