2024/03 3

인증 방식이란? - API Key, OAuth, JWT

서비스가 다양해지고 규모가 커지면서 기능들을 분리하기 시작했고, 이를 위해 모듈이나 애플리케이션들 간의 공유와 독립성을 보장하기 위한 사용자 인증 기능들이 나타나기 시작했다. 이러한 기능들 중 제일 먼저 등장하고 보편적으로 사용되는 기술은 API Key이다. API Key 동작 방식 사용자는 API Key를 발급받는다. 해당 API를 사용하기 위해 Key와 함께 정보를 요청한다. 애플리케이션은 요청이 들어오면 Key를 통해 사용자의 정보를 확인하여 권한을 확인 후 정보를 반환한다. 문제점 API Key를 사용자에게 직접 발급하고 해당 Key를 통해 통신을 하기 때문에 통신 구간의 암호화가 잘 되어 있더라도 Key가 유출된 경우를 대비하기 힘들다. 때문에 Key를 주기적으로 업데이트해야 하기에 번거롭다. ..

Web 2024.03.20

Cookie와 Session, 왜 사용하지?

Cookie는 클라이언트 측에서 정보를 저장하고 전송하며, Session은 서버 측에서 정보를 유지하고 관리한다. Cookie와 Session은 왜 사용할까? HTTP 프로토콜은 connectionless하고, stateless한 특징을 가지고 있다. HTTP 프로토콜은 클라이언트가 요청한 후 응답을 받으면 그 연결을 끊어 버리는 특성을 가진다. 또, 통신이 끝나면 상태를 유지하지 않는 특성을 가진다. 때문에 서버는 클라이언트가 누군지 확인하는 과정이 필요하다. Cookie와 Session을 사용하여 클라이언트를 확인한다. 저장 위치, 만료 시점, 용량 제한, 보안, 속도, 예시 Cookie란? 저장 위치 Cookie는 클라이언트의 상태 정보를 로컬(웹 브라우저)에 저장한다. 만료 시점(라이프 사이클) ..

Web 2024.03.20

MySQL 연동 (기존 H2 DB 사용)

MySQL으로 DB 교체하기 build.gradle에 MySQL에 대한 의존성 추가 implementation 'mysql:mysql-connector-java:8.0.32' application.yml 설정 파일 수정 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/{DB이름}?useSSL=false&serverTimeZone=Asia/Seoul&characterEncoding=utf-8 username: {사용자} password: {비밀번호} 비밀번호는 대문자, 소문자, 숫자, 특수문자가 포함된 8자 이상으로 설정해야 한다. 비밀번호 재설정 없이 스프링 서버를 실행했다가 오류를 마주했다. ..

Back-end/Spring 2024.03.08