Spring + Redis를 이용한 Email 인증 구현
·
spring & java
Google SMTP는 구글에서 무료로 메일을 발송할 수 있도록 제공해주는 서버이다.이메일 인증 코드를 전송해주는 API를 위해 Google SMTP를 이용할 것이다. SMTP란?단순 메일 전송 프로토콜을 의미하며, 인터넷에서 이메일을 보내기 위한 표준 통신 규약이다. 2단계 인증 후 앱 비밀번호를 설정한다. 1. application.properties 설정spring.mail.host=smtp.gmail.comspring.mail.port=587spring.mail.username=spring.mail.password=spring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.starttls.enable=truesprin..
Security + OAuth 를 활용한 카카오 로그인 처리
·
spring & java
카카오 로그인은 카카오계정으로 다양한 서비스에 로그인할 수 있도록 하는 OAuth 2.0 기반의 소셜 로그인 서비스이다. OAuth = Open Authorization으로, 권한 부여를 위한 개방형 표준 프로토콜이다.사용자가 앱에 로그인 사용자 인증 정보를 증명하지 않아도 앱이 사용자의 보호된 리소스를 제한적으로 액세스하도록 허용한다. 1.1 카카오 로그인 요청사용자가 프론트 단에서 카카오 로그인 버튼 클릭이떄 서비스 서버는 카카오 인증 서버로 리다이렉트 할 URL 생성 1.2 인가 코드 받기 요청 1.3 로그인 로그인 페이지에서 카카오 계정으로 로그인 1.4 인가 코드 발급카카오 인증 서버는 사용자를 우리가 지정한 redirect_url로 리다이렉트 시킨다. Rederiect URI 의 위치..
스프링 시큐티리 + JWT 를 이용한 로그인 처리
·
spring & java
스프링 공식문서 - 스프링 시큐리티 Architecture :: Spring SecurityThe Security Filters are inserted into the FilterChainProxy with the SecurityFilterChain API. Those filters can be used for a number of different purposes, like exploit protection,authentication, authorization, and more. The filters are executed in a specidocs.spring.io 스프링 시큐리티란?일반적인 공격에 대한 인증, 권한 부여 및 보호기능을 제공하는 프레임 워크이다.회원가입, 로그인/로그아웃, 권한 관리..
Spring Event를 이용한 비동기 이벤트 처리
·
spring & java
임시저장 해놓고 안 올렸길래 .. Spring Event는 스프링에서 제공하는 이벤트 기반 프로그래밍을 지원하기 위한 기능이다.이벤트는 이벤트를 발행하는 publisher와 이벤트를 처리하는 listener로 나누어진다.이벤트를 이용하면 코드에 대한 의존성을 분리할 수 있고, 특정 작업 이후에 이벤트를 통해 추가적인 작업 이후에 이벤트를 통해 추가적인 작업을 의존성 없이 진행할 수 있다는 장점이 있다. 로그인 이후 알림을 전송하는 경우 로그인과 알림 발송에 대한 의존성을 분리하는 데 이벤트를 사용할 수 있다. 스프링에서 이벤트의 발행과 구독- 멀티캐스팅 방식으로 동작한다.- 동기 방식으로 동작한다.- 트랜잭션과의 결합이 필요하다면 다른 리스너를 사용해야 한다. loginEvent 생성publ..
쿠키 & 세션 / JWT
·
spring & java
HTTP 프로토콜의 비연결성, 무상태 특징에 따라 인증이 필요하다.서버는 클라이언트를 기억하지 못한다. 따라서 서버에게 클라이언트가 누구인지를 계속 기억시켜줘야 한다.이것을 인증이라고 한다. Cookie서버가 사용자의 웹 브라우저(client)에 저장하는 데이터이다.쿠키의 형태는 Key:Value의 String 형식으로 이루어져 있다.이름, 값, 만료일, 경로 정보로 구성된다.하나의 도메인 당 20개의 쿠키를 가질 수 있다. 하나의 쿠키는 4kb까지 저장 가능하다. 쿠키가 있으면 다른 페이지로 이동할 떄마다 로그인을 계속 하지 않고 사용자 정보를 유지할 수 있다. 1. 클라이언트가 페이지를 요청2. 웹 서버는 쿠키 생성3. 생성한 쿠키에 정보를 담은 후 요청한 정보와 같이 클라이언트에게 보낸다.4..
JPA 영속성 컨텍스트 / 영속성 전이
·
spring & java
JPA 영속성 컨텍스트란?- 엔티티를 영구 저장하는 환경 엔티티에는 4가지 상태가 존재한다.- 비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 상태- 영속(managed): 영속성 컨텍스트에 저장된 상태- 준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된 상태- 삭제(removed): 삭제된 상태 Member member = new Member();member.setId("member1");member.setUsername("회원"); em.persist(member);엔티티 매니저를 통해 엔티티를 영속성 컨텍스트에 저장한 형태 em.detach(member);준영속 상태로 만듬 영속성 컨텍스트의 특징- 영속성 컨텍스트는 엔티티를 식별자 값으로 구분한다. 따라서..
HTTP method
·
spring & java
HTTP 메서드란?클라이언트와 서버 사이에 이루어지는 Request와 Response 데이터를 전송하는 방식을 말한다.요청 메서드를 정의하며, 주어진 리소스에 수행하길 원하는 행동을 나타내는 것을 의미한다고 볼 수 있다. HTTP Method의 종류- GET : 조회 (서버로부터 데이터를 취득한다.)- POST : 등록 (서버에 데이터를 추가, 작성한다.)- PUT : 수정 (서버의 데이터를 갱신한다.)- DELETE : 삭제 (서버의 데이터를 삭제한다.)- HEAD : 서버 리소스의 헤더 (get과 동일하지만 서버에서 body를 return 하지 않음)- CONNECT : 프록시 동작의 터널 접속을 변경- OPTIONS : 리소스가 지원하고 있는 메소드의 취득 idempotent 란?여러 번 수행해도..
스프링 MVC / 기본 애노테이션 정리
·
spring & java
레이어드 아키텍처란?소프트웨어 시스템을 여러 개의 레이어로 분리하여 구축하는 아키텍처 패턴이다.각 레이어는 특정한 역할과 책임을 갖고 있으며, 서로 상위 레이어에서 하위 레이어로만 직접적으로 의존한다. Spring MVC는 Model-View-Controller의 구조로 View와 Controller는 프레젠테이션 계층에 속하며Model은 비즈니스와 데이터 접근 계층 영역으로 구분 할 수 있다. 프레젠테이션 레이어사용자와의 상호작용을 담당한다. UI또는 API를 제공한다. 비즈니스 로직은 포함하지 않고, 비즈니스 계층으로 요청을 위임하여 반환받은 결과를 응답하는 역할만 수행한다. 스프링 MVC: 스프링은 웹 어플리케이션의 프레젠테이션 레이어를 구현하기 위해 스프링 MVC를 제공한다.DispatcherS..