본문 바로가기

Back-end139

Session 이란? 동작방식 클라이언트가 서버에 최초 요청 서버는 세션 ID를 새로 생성하고, 자신만의 목록에 세션 ID를 등록한다. 서버는 응답을 보낼 때 Header 영역의 쿠키 영역에 세션 ID를 담아 전송한다. 클라이언트는 세션 ID를 가지게 된다. 이후 요청시 클라이언트는 세션 ID를 함께 전송한다. 서버는 세션 ID를 목록에서 비교 후 그에 맞게 응답한다. 세션 ID가 사라지는 경우 서버에서 세션 제거 사용자가 브라우저를 모두 종료 → 클라이언트에서는 세션 값이 날라간다. 하지만 서버는 아직 이전값을 가지고 있어, 이 후 클라이언트 요청시 세션 ID 재발급을 해준다. 서버에서 설정한 세션 만료 시간이 초과된 경우 로그인 요청 동작방식 주로 로그인 요청(인증)을 할 때 많이 사용한다. 클라이언트가 서버에게 요청 서.. 2022. 10. 17.
[Spring Security] 스프링 시큐리티 스프링 시큐리티는 시큐리티 세션을 관리한다. 세션에 들어갈 수 있는 타입은 Authentication 타입만 가능 Authentication은 UserDetails, OAtuh2User 객체로 형변환이 가능하다. UserDetails : 일반적인 로그인 OAuth2User : OAuth 로그인 두개의 객체를 한 컨트롤러에서 관리하기 위해서는, 한 클래스로 두 인터페이스를 구현한다. Spring Security Filters Chain Spring Security 프레임워크를 애플리케이션에 추가하면 들어오는 모든 요청을 가로채는 필터 체인으로 등록한다. 이 체인은 다양한 필터로 구성되며 각 필터는 특정한 것들을 처리한다. 요청된 URL에 엑세스가 가능한지 세션 기반 인증일 경우 세션에서 사용자가 이미 인증.. 2022. 10. 17.
다양한 연관관계 매핑 연관관계 매핑 연관관계를 매핑할 때는 3가지 고려 다중성 단방향, 양방향 연관관계의 주인 다중성 다대일 일대다 일대일 다대다 단방향, 양방향 객체 관계에서 한쪽만 참조하는 것을 단방향, 양쪽이 서로 참조하는 것을 양방향 연관관계의 주인 외래키를 관리하는 곳 연관관계의 주인이 아니면 mappedBy 속성을 사용하고 연관관계의 주인 필드 이름을 값으로 입력해야 한다. 다대일 데이터베이스 테이블의 일대다 관계에서는 외래키는 항상 다쪽에 있다. 객체 양방향 관계에서 연관관계의 주인은 항상 다 쪽이다. 양방향 설정시 다쪽이 연관관계의 주인 양방향 연관관계는 항상 서로를 참조해야 한다. 무한루프에 빠지지 않도록 조심해야 한다. 일대다 다대일 관계의 반대 방향 Collection, List, Set, Map 중에 하.. 2022. 9. 15.
연관관계 매핑 기초 단방향 연관관계 객체 연관관계와 테이블 연관관계의 차이 객체의 연관관계는 서로 다른 단방향 관계가 2개 있는 것이고, 테이블의 연관관계는 양방향이다. 객체 그래프 탐색 객체가 참조를 사용해서 연관관계 탐색 @JoinColumn 외래키를 매핑할 때 사용 name : 매래핑 할 외래 키 이름 referencedColumnName : 외래 키가 참조하는 대상 테이블의 컬럼명 foreignKey : 외래 키 제약 조건을 직접 지정할 수 있다. unique, nullable, insertable, updatable, columnDefinition, table @ManyToOne 다대일 관계에서 사용한다. optional : false로 설정하면 연관된 엔티티가 항상 있어야 한다. fetch : 글로벌 페치 전략을.. 2022. 9. 14.
엔티티 매핑 @Entity JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 어노테이션을 필수로 붙여야 한다. 이 어노테이션이 붙으면 이 클래스는 JPA가 관리한다. name : JPA에서 사용할 엔티티 이름 지정 주의사항 기본 생성자는 필수(파라미터가 없는 public, protected) final, enum, interface, inner 클래스에는 사용 불가 저장할 필드에 final을 사용하면 안됨 @Table @Table은 엔티티와 매핑할 테이블을 지정. name : 매핑할 테이블 이름 catalog : catalog 기능이 있는 데이터베이스에서 catalog를 매핑 schema : schema 기능이 있는 데이터베이스에서 schema를 매핑 uniqueConstraints : DDL 생성 시에 유니.. 2022. 9. 7.
JWT 토큰 세션 방식 클라이언트가 서버로 로그인 요청 → 서버 session 생성/유지 → client에게 정보를 응답 서비스 요청 → 서버에서 인증/인가 확인을 위해 세션을 읽음 → 인증/인가 확인 후 응답 문제점 엔터프라이즈 환경에서는 다수의 서버가 존재하고, 각 서버의 세션이 동기화 되어야함 → 데이터베이스에게 부담 쿠키와 세션을 주로 같이 사용하는데 이 떄 CORS(Cross Origin Resource Sharing) 문제가 발생한다. 위 문제들을 해결하기 위한 방안이 Token 이다. JWT Spring은 stateless 서비스이다. token을 사용하면 연결을 하지 않은 채로 서비스 제공이 가능하다. token을 사용하면 서버가 늘어나도 인증 방식만 알고있으면 상관없다. → 확장성 쿠키를 전달하지 않.. 2022. 9. 5.