전체 글

전체 글

    JWT을 활용한 로그인/ Interceptor를 활용한 인가 처리 구현

    +) Disclaimer : 필자는 현재 Spring boot를 활용한 Rest API를 개발 중. 1. JWT 인증 구현 1) JwtService 클래스 구현 JWT token을 생성하고, claim에 담긴 정보를 추출하는 메소드 개발. package com.example.demo.utils; //라이브러리 생략 @Service public class JwtService { /* JWT 생성 @param userNum @return String */ public String createJwt(int userNum){ Date now = new Date(); return Jwts.builder() .setHeaderParam("type","jwt") .claim("userNum",userNum) .set..

    🔒사용자 인증 방식 - Cookie/Session, JWT, OAuth

    1) 쿠키/세션 쿠키는 사용자가 삭제하지 않는 이상 계속 남아있으며, 방문자의 정보를 방문자 컴퓨터의 메모리(클라이언트) 에 저장하는 것을 의미한다. 세션은 방문자의 요청에 따른 정보를 클라이언트가 아닌 웹 서버가 세션 아이디 파일을 만들어 서비스가 돌아가고 있는 서버에 저장하는 것을 의미한다. 세션 기반 인증 방식은 클라이언트의 상태를 서버에서 계속 유지하는 stateful 서버이다. 인증을 요구하는 서비스 로그인 / 회원가입 서버로 로그인 시도를 할때 id/pw를 보낸다. db가 id/pw가 맞는지 검증하게 될 것임. 세션 아이디 라는 것을 발급한다. 이 아이디를 가지고 통신할 예정. 세션 아이디를 db에 저장하고, 이를 전송하면 클라이언트의 저장소인 쿠키에 세션 id를 저장해둔다. 추후에 이 세션 ..

    🍃 Spring Boot로 개발한 Restful API 작동 프로세스

    MVC 패턴이란? Controller는 클라이언트로부터 요청을 받음. (처리 과정을 담당) Model은 최종 페이지에 쓰일 데이터를 뷰에 전달한다. (데이터를 담당) View는 최종 페이지를 만들어준다. 이렇게 각자의 역할을 나누는 기법을 MVC 패턴이라고 한다. 스프링 부트의 로직 Controller : 웹 브라우저의 요청 전담하여 처리, Service 호출 → Provider/ Service: 비즈니스 로직(아이디 중복검사,비밀번호 재검사, validation...)을 수행하며, 데이터베이스에 접근하는 DAO를 이용해 결과값을 받아옴. Provider : Read와 관련된 곳으로, DB에서 select해서 얻어온 값을 가공해서 결과로 추출한다. Service : Create, Update, Delet..

    REST API, 알고 사용하자!

    📘 REST API의 정의 우선, REST가 어떤 것을 의미하는지 알고 가도록 하자. REST는 Representational State Transfer의 약자이며, 다음과 같이 구성되어있다. 자원 (Resource) : URI 행위 (Verb) : HTTP Method 표현 (Representations) -> 따라서 REST API는 URI를 통해서 자원을 나타내고, HTTP Method를 이용해 해당 자원의 행위를 규정하여 그 결과를 받는 것을 의미한다. 💡REST의 특징 Uniform Interface URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 스타일을 말한다. Stateless REST는 무상태성 성격을 갖고, 작업을 위한 상태정보를 따로 저장하거나 관리하지 않..

    논리적 데이터베이스 모델링

    - 논리적 설계 현실 세계의 자료를 컴퓨터가 처리할 수 있는 물리적 저장장치에 저장할 수 있도록 특정 DBMS가 지원하는 논리적 자료 구조로 변환한다. 개념 세계의 데이터를 필드로 기술한 데이터타입과 이 데이터타입들 간의 관계로 표현되는 논리적 구조의 데이터로 모델화한다. 개념적 설계에서는 개념 스키마를 설계했다면, 논리적 설계 단계에서는 목표 DMBS에 맞는 스키마를 설계하게 돈된다. 관계형 데이터베이스라면 테이블, Relation을 설계하는 단계라고 볼 수 있다. - Relation이란? 논리적 설계 단계에서는 앞서 설계했던 ER 모델을 관계형 데이터베이스에 직접 구현할 수 있도록 DB 구조를 정의해야 한다. 따라서 ER 다이어그램을 일련의 과정에 따라서 릴레이션으로 변경하게 된다. Relation ..

    Amazon RDS 데이터베이스 구축(MySQL)

    🌟Goal : RDS DB 인스턴스를 생성하고, 한국에서 사용할 수 있도록 인코딩/타임존을 설정한다. 또한 EC2 서버와 RDS DB를 연동하고, MySQL workbench에서 접속할 수 있도록 해보자. #RDS DB의 사용 목적은? AWS EC2 내에 자체 DB를 구축해도 문제는 없으나, 만약 인스턴스에 문제가 생기면 DB에도 접근이 어려울 수 있다. 따라서 DB 서버와 기본 서버를 분리해서 관리하면 확장성, 보안, 편리성등의 이점을 얻을 수 있다. #RDS 인스턴스 생성 표준 생성으로 여러가지 설정이 가능하도록 해준다. 물론 가장 중요한 것은 프리티어를 설정해주는 것! db name, 사용자 이름 등은 기본으로 설정되어 있으니 암호만 따로 지정해주자. 인스턴스 클래스, 스토리지 등은 프리티어에서는 ..

    ERD, 어떻게 설계하는 걸까?

    🧐 What is ERD? 우선, ERD가 무엇인지 부터 짚고 넘어가자. ERD란 Entity Relationship Diagram의 약어로, 데이터베이스 구조를 한눈에 알아보기 위해서 쓰인다. DB를 개발하기 전에 보다 많은 아이디어를 도출하고, 데이터베이스 설계의 이해를 높이기 위해 데이터 모델링을 실시한다. 쿼리문을 작성할 때 테이블들이 구조화된 다이어그램을 보면서 도움을 받을 수 있다. 데이터의 다양한 특징을 확인할 수 있어 요구사항을 그에 맞게 개발할 수 있다. ERD의 핵심은 세 가지 이다. "Entity" 와 "Relationship", 그리고 "Attribute"이다. 각 용어가 무엇을 의미하는지 살펴보자. #Entity(개체) Entity는 관리하고자 하는 정보의 실체이며, 사람, 객체 ..

    AWS EC2 서버에 도메인/HTTPS/Redirection 적용

    🌟Goal : 도메인을 구입하여 EC2 서버에 연결하고, HTTPS, 서브도메인, Redirection까지 적용해보자. - 도메인 적용 : 가비아에서 1년짜리 도메인을 하나 구입해보였다. 원하는 도메인을 아무거나 구입하면 됨. 📌 서버와 도메인을 연결하려면? : 파일과 시스템을 매핑하는 DNS 레코드를 통해 특정 도메인이 연결하려는 서버를 DNS 서버에게 알려주어야 한다. 📌 관련 개념 정리 DNS 서버 : IP 주소와 도메인 주소를 이어주는 환경/시스템이다. 호스트 : 네트워크에 연결된 장치 또는 서버들에 부여되는 고유한 이름으로 기계적인 주소 대신 일반인이 읽고 이해하기 쉬운 이름으로 만들어진다. TTL : Time to live -> IP 패킷의 생존 시간 (IP 패킷이 라우팅 되며 거쳐야할 라우터..