Spring security_인증과 권한 관리
Spring Security: 인증과 권한 관리 back과 front를 분리하면서 해당 권한에 해당하는 api 주소를 back에 맞게 변경했다. 그리고 해당 주소 중 관리자만 사용할 수 있게 권한을 Security에 설정했다. 문득 이 권한은 로그인한 사용자 정보를 얻기 위해 SecurityContextHolder.getContext().se...
Spring Security: 인증과 권한 관리 back과 front를 분리하면서 해당 권한에 해당하는 api 주소를 back에 맞게 변경했다. 그리고 해당 주소 중 관리자만 사용할 수 있게 권한을 Security에 설정했다. 문득 이 권한은 로그인한 사용자 정보를 얻기 위해 SecurityContextHolder.getContext().se...
CORS 기존 브라우저 정책은 서로 다른 도메인으로부터 리소스가 필요한 경우 보안상의 이유로 다른 도메인의 리소스를 가져오는 것이 불가능했다. 이를 SOP (Same-Origin Policy, 동일 출처 정책) 이라고 한다. 하지만 실제 서비스 개발에서는 프론트엔드와 백엔드 서버의 도메인이 다르거나 외부 API 서버와 통신해야 하는 경우가...
@AuthenticationPrincipal을 활용한 사용자 정보 주입 @AuthenticationPrincipal은 Spring Security에서 현재 인증된(principal) 사용자의 정보를 주입받을 때 사용하는 어노테이션이다. 이를 통해 컨트롤러나 서비스에서 현재 사용자의 정보에 쉽게 접근할 수 있다. 문제 User가 UserDetai...
동시성을 통한 다중 접속자 관리 동시성(Concurrency)이란 하나의 코어에서 여러 스레드가 번갈아 실행되면서 동시에 동작하는 것처럼 보이게 만드는 개념이다. 실제로는 한 시점에 하나의 스레드만 실행되지만 매우 빠른 전환이 일어나기 때문에 동시에 처리되는 것처럼 보인다. 이 과정에서 스레드 간 전환이 발생하는데 이를 Context Switch...
HTTPS란 HTTPS는 Hypertext Transfer Protocol Secure의 약자로 HTTP 프로토콜에 SSL이 추가된 프로토콜이다. 기존 HTTP는 데이터를 암호화하지 않고 전송하기 때문에 중간에서 데이터가 노출될 수 있다. 반면 HTTPS는 SSL을 이용해 데이터를 암호화하여 전송하므로 보안성이 높다. HTTPS를 사용하려면...
배포_OAUTH2 + Security back과 front가 분리되기 전에는 <a href="/oauth2/authorization/kakao">Kakao</a> 위와 같이 설정만 해도 소셜 로그인을 하는데 문제가 없었다. 문제는 back과 front를 분리하면서 해당 url을 페이지로 변환하려고 하면서 에러가 발생했다. ...
배포하면서 생긴 채팅 관련 오류 모음 집(+SSE) 로컬에서 https를 적용했을 때는 문제가 되지 않았으나 배포하면서 발견한 에러들을 정리해봤다. 1. 공통 JS와 페이지별 기능 JS 채팅 관련 js를 작성한 곳이 chat.js이고 여러 페이지에서 공통적으로 사용한 변수들과 메소드를 모아놓은 곳이 global.js다. global.js에...
Connection timed out: connect. DB를 연결하려고 보니 Connection timed out: connect. 에러가 떴다. 이 글을 보고 EC2의 보안그룹을 체크해봤다. 유형 : MYSQL, 포트 범위 : 330으로 설정은 했으나 소스 부분에서 팀원이 “내 IP”만 허용해둬서 나는 접근을 할 수가 없었다. 그...
Redis 이 전 글에서 redis를 application.properties에 아래와 같이 설정했다. spring.redis.host = host.docker.internal host.docker.internal은 Docker for Windows 및 Docker for Mac에서 로컬 호스트를 가리키는 특수한 DNS 이름이다. 따라서 Li...
Proxy • em.find() vs em.getReference() • em.find(): 데이터베이스를 통해서 실제 엔티티 객체 조회 • em.getReference(): 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 → DB 쿼리는 안나가는데 객체는 조회되는 걸 말한다. 아래는 기본 코드 EntityManagerFactor...