본문 바로가기

SPRINGBOOT9

[spring security] 7. 로그인 검증(인증), UserDetails, UserDetailsService 로그인 검증(인증) [ 시큐리티를 통해 인증을 진행하는 방법 ] Login 페이지(loginform.html)를 통해 아이디, 비밀번호를 POST 요청 시, 스프링 시큐리티 인증 절차를 거쳐 로그인 진행 DB(데이터베이스)에 저장된 회원 정보를 조회하여 비밀번호를 검증하고 서버 세션 저장소에 해당 아이디에 대한 session을 저장 이때, 로그인 회원 정보를 검증하기 위해서는 UserDetailService , UserDetails 클래스 구현 필요 구조도 로그인 회원 정보를 검증하기 위해서는 UserDetailService , UserDetails 클래스 구현 필요 해당 클래스는 인터페이스이므로, 이를 상속받아 구현하는 클래스 필요 DB(데이터베이스)의 회원 정보를 가져와, 로그인된 정보를 비교하여 검.. 2024. 1. 11.
[spring security] 6. 회원가입 로직 register.html ( 회원 가입 페이지) tyymeleaf 사용 회원가입 하기 userDto 회원 가입 시에 전달받은 회원 데이터를 담는 객체 package com.example.securitytest.dto; import lombok.Getter; import lombok.Setter; @Setter @Getter public class UserDto { // 회원 가입한 회원 데이터를 받음 private String username; private String password; } RegisterController 회원 가입 정보를 userDto를 통해 매개변수로 받아서 registerService로 전달 package com.example.securitytest.controller; impo.. 2024. 1. 10.
[spring security] 5. DB 연결하기 데이터베이스의 종류와 ORM MySQL 데이터베이스 사용 : 회원 정보를 저장하기 위한 데이터베이스 DB에 접근하기 위해 Spring Data JPA(ORM)를 사용 SQL문을 별도로 사용하지 않고 DB에 접근 (JPA라는 ORM 사용하여 DB에 접근) 데이터 베이스 의존성 gradle 사용 dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.mysql:mysql-connector-j' } 데이터 베이스 연결하기 위한 설정 변수 설정을 통한 데이터베이스 연결 application.properties 설정 spring.datasource.driver-class-name=com.. 2024. 1. 10.
[spring security] 3. springconfig 설정 : BCrype 암호화 메서드 시큐리티 암호화 - 사용자 인증(로그인) 시에 아이디와 비밀번호를 검증하는데 이때, 비밀번호는 단방향 해시 암호화를 진행하여 회원가입시에 저장되어 있는 비밀번호와 대조 - 로그인 시 해시화를 하여 대조하기 때문에 회원가입 시에도 비밀번호 항목에 대해 암호화를 진행해야 함 - 회원 가입 및 검증에 암호화를 사용 - 스프링 시큐리티는 이러한 암호화를 위해 BCrypt Password Encoder를 제공하고 권장함 해당 객체를 return하는 메서드를 만들고 @Bean으로 등록하여 사용 단방향 해시 암호화 종류 양방향 대칭키 비대칭키 단방향 해시 다시 해독이 불가능 패스워드 암호화 관련 security config 클래스 설정 패스워드를 암호화 시켜주는 함수 package com.example.test.co.. 2024. 1. 10.
[spring security] 2. 인증과 인가, securityConfig 설정 인증 - 사용자의 신원을 입증하는 과정 - 로그인을 통하여 사용자가 누구인지(예: 회원) 확인하는 과정 인가 1. 인가의 의미 - 경로별로 접근 권한을 확인 - 즉, 사이트의 특정 부분에 접근할 수 있는 권한이 있는지 확인 - 일종의 허가 [ 예시 ] - 사이트의 특정 부분에 접근할 수 있는 권한을 가진 자인지 확인 - 관리자 페이지는 관리자 역할을 가진 사람만 허가 - 특정 경로에 요청이 오면, controller에 도달하기 전에, spring security가 filter를 통하여 검증 1. 해당 경로의 접근이 누구에게 열려 있는지 2. 로그인이 완료된 사용자 인지 3. 해당되는 role을 가지고 있는지 2. securityConfig : 스프링 시큐리티 설정 클래스 특정 경로에 대한 인가 작업 설정.. 2024. 1. 10.
[SpringBoot] DAO와 Mapper 인터페이스의 차이? 1. DAO와 Mapper 인터페이스의 정의 DAO Date Access Object 데이터베이스(DB)의 데이터에 접근하는 객체 즉, DB에 접근하여 데이터를 조회하고 조작하는 기능을 하는 객체 DAO 구조는 인터페이스와 그 인터페이스를 구현한 클래스의 결합된 형태 Controller.java > Service.java > ServiceImpl.java > DAO.java > Mapper.xml Mapper interface Mybatis의 mapping xml 파일에 작성된 sql을 호출하기 위한 인터페이스 단순 인터페이스 인터페이스를 구현한 클래스 사용하지 않음 mybatis 3.0 이상부터 지원 Controller.java > Service.java > Mapper.java > Mapper.xml.. 2024. 1. 10.