- [Spring] Spring Security 기본 개념(JWT / OAuth 2.0 / 동작방식 / 구성요소)2023-11-06 23:49:25이번엔 Spring Security의 기본 개념에 대해 공부했다. 1. JWT(Jason Web Token) 유저 인증, 식별하기 위한 토큰 기반의 인증에 쓰인다. - 구조 헤더(Header) 타입(Type) : 항상 JWT 알고리즘(alg) 페이로드 (Payload) : 사용자 정보 담김 서명 (Verify Signature) - 동작 방식 클라이언트 측에서부터 서버 측으로 JWT 받음 서버 측의 비밀 값과 JWT의 헤더, 페이로드를 alg에 넣고 서명값과 같은지 확인 같다면 유저에 인가한다. - 특징 시간에 따라 상태 값이 달라지지 않음(Stateless) 서버가 통제하지 않아 여러 사용자가 같은 JWT로 여러 요청 보내도 추적 불가능 - 종류 Access Token : 인가받았을 때 쓰는 수명이 짧..
- [Spring] RESTful 이란?2023-11-06 18:01:52RESTful Web Service를 구현해보기 전에 RESTful 에 대해서 알아보자. 1. RESTful Api 를 사용하는 이유 앱에서 사용되는 대량의 데이터는 파일을 따로 구성하여 앱 내부에 넣어두고, 이 파일을 읽는 방식으로 처리된다. 콘텐츠 서비스 앱의 핵심요소는 최신 데이터이다. 하지만 데이터를 파일에 저장하는 방식으로 처리하게 되면 새로운 데이터를 추가할 때 마다 사용자가 앱 업데이트를 해야하고, 그럴수록 사용자 경험은 점점 나빠질 것이다. 따라서 데이터를 서버에 두고, 서버로부터 다운받아 사용한다면 이를 해결 할 수 있다. 서버에 새로운 데이터를 업로드하고, 앱은 이 서버로부터 데이터를 받아내면 사용자는 앱에 대한 업데이트 없이 최신 데이터를 받을 수 있는 것이다. 2. 비연결성 지향 통..
- [JPA] 매핑 어노테이션2023-10-20 16:10:57오늘은 엔티티 내 필드에서 매핑컬럼에 대한 특성을 지정할 수 있는 매핑 어노테이션을 알아보겠다. @Column @Enumerated @Temporal @Lob @Transient @Column name @Column(name = "컬럼명") 필드와 매핑할 테이블의 컬럼명을 지정한다. 기본값 : 필드명 @Column private String name //컬럼명 : name(필드명) @Column(name="member_name") private String name //컬럼명 : member_name insertable, updatable 필드 값 수정 시 DB에 반영할 지 여부 @Column(insertable = false) : 엔티티 저장 시 이 필드는 DB에 저장하지 않는다. @Column(upd..
- [Spring Data JPA] 파라미터 바인딩2023-10-19 00:21:44포트폴리오 작성을 위해 웹을 만들고 있는 도중 JPA에 회원 이메일을 통해 회원을 조회하고 싶은데 @Query문에 파라미터를 어떤 식으로 작성하는지 몰라 찾아보다 알게 되었다. 스프링 데이터 JPA는 2가지 방법으로 파라미터 바인딩을 지원한다. 위치기반 이름기반 SELECT m FROM Member m WHERE m.email = ?0 //위치 기반 SELECT m FROM Member m WHERE m.email = :email //이름 기반 스프링 데이터 JPA의 기본값으로는 위치 기반 파라미터 바인딩이다. 이름 그대로 파라미터 순서로 바인딩하는 것이다. 코드 가독성과 유지보수를 위해 위치 기반보다는 이름 기반을 사용하게 한다. 위치 기반은 순서 실수가 있을 수 있기 때문이다. 공식 문서를 보면 알 ..