반응형

SpringBoot 34

JWT

🙄 Spring Security - JWT 인증, 인가 과정   🙄 JWT 로그인 여부 확인@AuthenticationPrincipal 어노테이션으로 현재 로그인 유저를 확인할 수 있다. @GetMapping("/xxx")public ResponseEntity methodXxx(@AuthenticationPrincipal UserDetails userDetails) { String username = userDetails.getUsername(); Member member = memberRepository.findByUsername(username); return ResponseEntity.ok(member);}   @PreAuthorize("hasRole('ROLE_ADMIN')") 어노테이션..

SpringBoot 2024.03.30

회원가입 시 입력받은 이메일로 인증링크 전송

🎈 회원가입 시 이메일을 입력받아 해당 이메일로 인증 링크를 발송하는 기능을 구현 계획 인증 링크 구성 - http://localhost:8080/user/verified/ + 해당 사용자의 id를 이용하여 생성된 token 사용 Token Entity@Entity@Getter@Builder@NoArgsConstructor@AllArgsConstructor@AuditOverride(forClass = BaseEntity.class)public class Token extends BaseEntity{ @Id @GeneratedValue(generator = "uuid2") @GenericGenerator(name = "uuid2", strategy = "uuid2") private String i..

SpringBoot 2024.03.27

JPA 외래키를 기본키로 사용하기

🎈 JPA를 사용할 때, 위의 그림처럼 외래키를 기본키로 설정하는 방법@MapsId 활용 -> 매핑한 연관관게를 기본키에도 매핑하겠다는 뜻이다.  간단한 예제를 통해 살펴보자.  Member 테이블과 Memeber의 id를 외래키이자 기본키로 가지는 Vip 테이블이 있다. // Member Entity@Entity@Getter@Builder@NoArgsConstructor@AllArgsConstructorpublic class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String name;}  // Vip..

SpringBoot 2024.03.27

개인 프로젝트 - 회원가입 시 이메일 인증

🤔 고민회원가입 시 이메일을 입력받고 이메일 인증을 위한 기능을 사용해보고 싶다.사용 방법은 2가지 이다.입력받은 이메일로 인증번호를 전송하고 인증번호를 입력받아 회원가입을 완료하는 방법입력받은 이메일로 인증링크를 받아 클릭하여 이메일을 인증하는 방법2번 방법을 선택하여 개발하기로 하였다 !!!왜냐하면, 1. 보안적인 측면사용자의 이메일 계정과 더 강력한 연결을 할 수 있고, 인증번호의 경우 유출의 위험이 있기 때문에 유일하게 액세스를 할 수 있는 링크 방식이 더 적합하다고 판단하였다. 2. 편리성사용자의 입장에서 링크를 클릭하는 방식이 별도의 입력 과정이 없기 때문에 편리하다고 생각하였다!!  🔺 코드로 구현해보자우선 큰 흐름을 살펴보자.회원가입을 한 유저가 이메일 인증이 안된 회원일 경우 인증 메..

SpringBoot 2024.03.20

서비스의 인증과 권한 부여

※ 참고 자료https://smarthammer.tistory.com/109 [Java Spring] 스프링부트 3.X 스프링 시큐리티 (Spring security)1. 스프링 시큐리티 (Spring security) (1) 인증 / 인가 차이 인증(Authentication) 은 사용자가 본인의 신원을 입증하는 과정이다. 예를 들면 어떤 사이트에 아이디와 비밀번호를 입력하고 로그인 하는 과smarthammer.tistory.com  1. 보안 용어 이해(1) 인증 (authentication)사용자가 누구인지 확인하는 단계를 의미한다. 대표적인 예로 로그인이 있다. 로그인은 데이터베이스에 등록된 아이디와 패스워드를 사용자가 입력한 아이디와 패스워드와 비교하여 일치 여부를 확인하는 과정이다. 로그인에 ..

SpringBoot 2024.03.17

타임리프 (Thymeleaf)

일반적으로 많이 사용하는 방식인 템플릿(template) 방식이 있다.템플릿은 자바 코드를 삽입할 수 있는 HTML 형식의 파일이다. 스프링 부트에서는 템플릿 엔진을 지원한다. 템플릿 엔진에는 Thymeleaf, Mustache, Groovy, Freemarker, Velocity 등이 있다. 1. 타임 리프 사용하기(1)  build.gradle 파일 작성dependencies { (... 생략 ...) implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect'}(... 생략 ...)  (2)  "scr/m..

SpringBoot 2024.03.15

SpringSecurity - antMatchers() 와 requestMatchers() 차이

1. antMatchers()이 메서드는 URL 패턴을 지정하여 해당 패턴에 대한 접근 권한을 설정하는 데 사용Ant 스타일의 패턴을 사용하여 URL을 매칭시킬 수 있다.예를 들어 'antMatchers("/admin/")' 은 "/admin/"으로 시작하는 모든 URL에 대한 접근 권한 설정을 의미  2. requestMatchers()이 메서드는 요청 타입에 따라 URL 패턴을 지정하여 해당 요청 타입에 대한 보안 설정을 할 때 사용요청의 종류는 HTTP 메서드(GET, POST 등) 나 서블릿 경로를 기반으로 설정할 수 있다.즉, 명확하게 요청 대상을 지정하는 경우에 사용예를 들어, 'requestMatchers(HttpMethod.GET, "/public/")' 은 HTTP GET 요청 중 "/p..

SpringBoot 2024.03.11

SpringBoot 3.x 스프링 시큐리티 (Spring security)

1. 스프링 시큐리티 (Spring security)(1) 인증 / 인가 차이인증(Authentication) 은 사용자가 본인의 신원을 입증하는 과정이다. 예를 들면 어떤 사이트에 아이디와 비밀번호를 입력하고 로그인 하는 과정이 있다.인가(Authorization)은 사용자의 권한을 확인하는 작업이다. 쉽게 말해 파일 공유 시스템에서 권한 별로 접근할 수 있는 폴더가 다르다. 상위 권한을 가진 사람은 상위 폴더에 접근이 가능하고, 하위 권한을 가진 사람은 하위 폴더에만 접근이 가능하다. 이럴 경우 사용자의 권한을 확인해야 하는데 이 과정을 인가라고 한다. (2) 스프링 시큐리티스프링 기반 애플리케이션의 보안을 담당하는 스프링 하위 프레임워크이다. 보안 관련 옵션을 제공해주며 복잡한 로직 없이 어노테이션..

SpringBoot 2024.03.11

서버 간 통신

1. RestTemplate 란RestTemplate은 스프링에서 HTTP 통신 기능을 손쉽게 사용하도록 설계된 템플릿이다. HTTP 서버와의 통신을 단순화한 이 템플릿을 이용하면 RESTFUL 원칙을 따르는 서비스를 편리하게 만들 수 있다. RestTemplate은 기본적으로 동기 방식으로 처리되고, 현재 지원 중단(deprecated)된 상태이다. RestTemplate 특징HTTP 프로토콜의 메서드에 맞는 여러 메서드 제공RESTful 형식을 갖춘 템플릿HTTP 요청 후 JSON, XML, 문자열 등의 다양한 형식으로 응답을 받을 수 있다.블로킹(blocking) I/O 기반의 동기 방식 사용다른 API를 호출할 때 HTTP 헤더에 다양한 값 설정 가능 (1) RestTemplate 동작 원리  애..

SpringBoot 2024.03.10

액추에이터

스프링 부트 액추에이터는 HTTP 엔드포인터나 JMX를 활요앻 애플리케이션을 모니터링하고 관리할 수 있는 기능을 제공한다.JMX(Java Management Extensions)는 실행 중인 애플리케이션의 상태를 모니터링하고 설정을 변경할 수 있게 해주는 API이다. JMX를 통해 리소스 관리를 하려면 MBeans(Managed Beans)를 생성해야 한다. 1. 엔드포인트액추에이터의 엔드포인트는 애플리케이션의 모니터링을 사용하는 경로다. 스프링 부트에 여러 내장 엔드포인트가 포함되어 있으며, 커스텀 엔드포인트를 추가할 수 있다.액추에이터를 추가하면 기본적으로 엔드포인트 URL로 /actuator가 추가되며 이 뒤에 경로를 추가해 상세 내역에 접근한다. 엑추에이터의 기본 엔드포인트 테이블ID설명audit..

SpringBoot 2024.03.10
반응형