본문 바로가기

전체 글76

Spring) Spring Security Spring Security 더보기 Spring Security 인증 및 인가에 대해 많은 기능을 지원해주는 Spring 프레임 워크 Spring 에서 모든 호출은 DispatcherServlet을 통과하게 되고 이후에 각 요청을 담당하는 Controller 로 분배된다.이 때, 각 요청에 대해서 공통적으로 처리해야할 필요가 있을 때 DispatcherServlet 이전에 단계가 필요하며 이것이 Filter이다. Security는 기본적으로 세션 방식으로 동작 한다. JWT 방식으로 수정할 수 있다. @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOExcept.. 2023. 7. 24.
Spring) refresh token 왜 refresh token을 사용 하는가? 더보기 토큰 기반 인증 방식에서 토큰은 stateless하다. stateless(무상태)란 전달해야 하는 정보를 클라이언트 쪽에서 갖고 있는 것. stateful(상태 유지)란 요청의 정보를 서버가 기억 하는 것. https://roxy.iro.ooo/infra/protocol/http/http-stateful-stateless stateless 하므로 서버 쪽에서는 한번 탈취당한 토큰을 사용자인지, 해커인지 확인할 방법이 없다. Access Token에는 프론트엔드에서 사용되는 사용자의 정보가 담긴다. 물론 디코딩하면 값을 쉽게 알 수 있으니 민감한 정보를 담으면 안된다. Refresh Token을 온리쿠키로 보내면 클라이언트 쪽에서 정보를 열어볼 수 없기 .. 2023. 7. 23.
AWS) RDS 연결 문제 해결 새로운 프로젝트가 시작되었다. NewNeek을 클론코딩 하는 프로젝트이다. 새로운 프로젝트를 생성하고 팀원들과 CI/CD 구축을 하고 HTTPS까지 배포를 완료 하였다. 그렇게 초기 설정을 한 프로젝트를 pull 받아 실행하였더니 에러가 떴다. 다른 팀원들은 다 정상적인 실행이 되었다. 전 프로젝트에 쓰였던 RDS로 연결 되는 문제 발생 더보기 현재 새로 만든 프로젝트임에도 불구하고 에러 로그를 보았다. Caused by: java.net.UnknownHostException: 알려진 호스트가 없습니다 (webmini-database.cpisrga7lp30.ap-northeast-2.rds.amazonaws.com) 이 주소는 나의 전 프로젝트에 쓰였던 RDS 경로다. 현재 properties 파일에는 .. 2023. 7. 22.
23.07.19) CORS 에러 해결 HTTPS로 배포하고 CI/CD로 구축 후 프론트엔드 분들과 연결해봤다. 연결하자마자 발생한 CORS에러. 난생 처음 보는 에러에 어떻게 해야 할 지 감조차 잡히지 않았다. 남은 시간은 2일. HTTPS배포와 CI/CD 파이프 라인 구축하는데 시간을 너무 많이 쓴 바람에 늦어졌다. 처음 발생한 에러에 이해하고 해결하기엔 시간이 너무 촉박했다. 그렇게 구글링을 하며, 해결방안을 여러 방면으로 시도를 했다. 상위 레벨인 Application에 @CrossOrigin 달아주기 프로젝트에서 다른 패키지들보다 상위 레벨인 Application의 main 메서드에 @CrossOrigin을 달아줌으로써, 서버가 시작 될 때 포트 권한을 열어주는 것이다. 이 방법은 테스트할 때를 제외하곤 열어두면 안될듯 싶다. pub.. 2023. 7. 19.
23.07.17) HTTPS로 배포하기(완), 환경변수 설정, CI/CD 구축 80포트가 열려있지 않은 문제 해결 더보기 다른분께 자문을 얻으러 가서 같이 보는데 여전히 계속 오류가 나서 그 분이 하나하나 같이 찾아봐주시면서 아이디어를 제공해주셨다. 같이 화면을 보며 원래 하던대로 진행하는 도중에 문제점을 발견했다. 인스턴스를 몇번이고 다시 삭제하고 설치했다. EC2 인스턴스 생성하는 방법을 알려주는 노션에서 '포트번호 안쓰고 접속하는 방법'에서 문제가 생겼던 것이다. sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 이 것은 HTTP의 포트 80 포트로 접속했을 때 8080으로 변경해주는 명령어다. 그래서 certbot이 80포트로 접속하려 할 때 8080로 리다이렉트 돼면.. 2023. 7. 17.
23.07.16) HTTPS로 배포하기 어제에 이어 다시 시도 함. 첫 번째 시도 더보기 배포에 성공하신 분에게 여쭤보니 본인은 SSL발급이 한번에 되었다고 한다. 그래서 그 분이 했던 방식을 참고하며 내가 설정 안했던 것을 한번 설정해보았다. cafe24에서 포워딩을 설정했다. 도메인 포워딩 관리에 들어가 EC2의 퍼블릭 DNS를 추가해줬다. 결과는 실패... 포워딩을 찾아보니 다른 도메인을 입력해도 나의 도메인으로 들어가게 해주는 기능이라고 한다.. 현재는 임시 웹서버가 나의 도메인을 연결할 수 없다는 오류이기 때문에 안된 것 같다.. 다른 방법을 찾아보자.. 두 번째 시도 더보기 GPT한테 물어보고 체크해볼 사항들을 확인해 보았다. 방화벽 활성화 여부, EC2 네트워크 인터페이스 확인, 서버에서 80포트 사용하는 서비스 여부 확인 등 설.. 2023. 7. 17.
23.07.15) Https로 배포하기 HTTPS로 배포하기 더보기 1. EC2에 인스턴스 생성 2. 도메인과 SSL 인증서를 준비 도메인: 카페 24 도메인 연결: https://jforj.tistory.com/275 SSL 인증서 발급: https://velog.io/@server30sopt/EC2-HTTPS%EB%A1%9C-EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0 위에 거 or 아래 거 https://subbak2.com/110 문제 발생 더보기 sudo certbot certonly --standalone certbot를 통해서 SSL를 발급 받으려고 명령어를 치고 도메인을 입력했는데, 실패가 됨. certbot의 임시 웹 서버에 연결하지 못하고 있다는 오류 발생 ●EC2 서버에서 인바운드 접속을 차단하고 있다면.. 2023. 7. 15.
23.07.09) 한 주를 마치며 복습 키워드: ORM, SQL, MVC ORM 더보기 ORM(Object Relational Mapping)이란 객체와 관계형 데이터베이스의 데이터를 자동으로 연결시켜주는 기법. 객체 지향 프로그래밍 언어를 사용하여 데이터베이스와 상호작용하게 해주는 일련의 원칙과 패턴이다. ORM을 사용하면 관계형 데이터베이스의 테이블을 객체로 다룰 수 있다. ORM은 이론적인 개념. JPA는 자바에서 ORM 기술 표준으로 사용하는 방식을 정의한 인터페이스 모음이다. 이 인터페이스를 실제로 구현한 것이 Hibernate. SQL 더보기 SQL은 관계형 데이터베이스에 데이터를 조작하고 조회하기 위한 프로그래밍 언어. SQL에는 종류가 나눠져 있다. 데이터 조작어(DML): 데이터 조회, 삽입, 수정, 삭제하는 명령어 SE.. 2023. 7. 9.
23-07-09) Spring 강의 노트 FetchType 더보기 FetchType.LAZY(지연로딩)는 필요한 시점에 필요한 정보만 가져온다. FetchType.EAGER(즉시로딩)은 조회하는 즉시 연관된 모든 정보를 가져온다. 원래는 조회만 하면 @Transactional이 필수가 아니지만, 지연로딩이 적용된 엔터티를 조회할 땐 영속성 컨텍스트가 필요함으로 @Transactional이 필요하다. LAZY는 데이터가 필요할 때 필요한 데이터의 값만 가져온다. 그러니 모든 정보가 필요하지 않다면 LAZY로 설정해야한다. EAGER로 설정시 불필요한 데이터까지 로딩하여 성능저하를 일으킬 수 있다. 영속성 전이 더보기 @OneToMany(mappedBy = "user", cascade = {CascadeType.PERSIST, CascadeType.. 2023. 7. 9.