본문 바로가기

Java/spring20

spring security를 알아보자 - 12 ㅇ JSON Web Token 기반 인증 인증방법으로 세션과 토큰의 차이는 이미 포스팅해놓은게 있으니 패스. 그리고 JWT를 적용해서 어플을만든 경험도 있기에 간단하게 짚고 넘어가보겠다. ㅇ 토큰? 토큰은 클라이언트 애플리케이션에서 백엔드 시스템으로 보호된자료에 접근할때마다 보낼 수 있도록 설정되어있다. 토큰이 유효하다면 백엔드 서버는 올바른 응답을 해줄 수 있다. ㅇ 토큰을 사용함으로써 얻는 장점 자격증명이 되면 실제 자격증명을 공유하지 않고도 토큰을 주고받는것으로도 클라이언트와 백엔드 서버가 작업할 수 있게된다. 또한 백엔드 애플리케이션도 인증을 반복해서 하지 않아도 된다. 그리고 토큰을 사용하여 엔드 유저의 유저정보 혹은 역할정보를 저장할 수 있다. Spring Security 에서 기본으로 만드는.. 2024. 4. 19.
spring security를 알아보자 - 11 ㅇ Spring Security에서 필터란? 간단히 보면 클라이언트에서 오는 요청을 필터에서 한번 걸러서 서블릿으로 전달을 한다. 이때 필터는 어떤걸 걸러주는 걸까? 여러가지 필터가있지만 뭐 예를들어 보자면, SecurityContextPersistenceFilter: 보안 컨텍스트를 로드하거나 저장함. CsrfFilter: CSRF 공격을 방지함. LogoutFilter: 로그아웃 처리를 함. UsernamePasswordAuthenticationFilter: 폼 로그인 처리를 함. 각 필터는 요청을 처리하고, 다음 필터로 요청을 전달하거나, 필터 체인을 종료하고 응답을 반환할 수 있다. 필터는 요청 또는 응답을 수정할 수 있으며, 인증 실패와 같은 경우에 요청 처리를 중단하고 오류 응답을 반환할 수도.. 2024. 4. 18.
spring security를 알아보자 - 10 ㅇ 인증과 인가의 차이 인증(Authentication)은 사용자의 신원을 확인하는 과정. 사용자가 누구인지를 식별하고 검증하는 것. 대표적인 예시로 로그인이 있다. 인가(Authorization)은 인증된 사용자가 수행할 수 있는 행동을 결정하는 과정. 인증이 실패하면 401, 인가가 실패하면 403. 인증이 됐지만 이 유저는 접근할 수 없다는 뜻. 애플리케이션 내에는 다양한 역할이 존재하고 역할마다 접근할 수 있는 서비스는 다를 것이다. 그래서 우리는 인가 설정을 잘 해야한다. ㅇ 어디에 인가정보가 저장될까? Spring Security에서는 이 권한 또는 특권을 권한(Authorities), 역할(role)로 구분해서 부른다. 저장되는 방식은 비슷한다. 먼저 권한을 보자. GrantedAuthori.. 2024. 4. 15.
spring security를 알아보자 - 9 ㅇ CORS(Cross-Origin Resource Sharing) CORS 에러는 웹 애플리케이션에서 요청을 보낼 때, 해당 요청이 다른 도메인, 프로토콜, 또는 포트를 가지고 있는 서버로부터 자원을 요청하는 경우에 브라우저에 의해 발생한다. 서버에서 이러한 요청을 허용하려면, 응답에 Access-Control-Allow-Origin과 같은 CORS 헤더를 포함해야 합니다. 서버 설정에서 이 헤더를 올바르게 구성하지 않으면, 브라우저는 보안상의 이유로 응답을 차단하고, 개발자 콘솔에 CORS 관련 에러 메시지를 표시함. CORS는 보안공격이 아니라, 그로부터 지키기 위해 실행되는 보호단계로 보면 된다. 나도 처음 프로젝트에서 CORS 설정을 해주지 않아서 배포과정에서 실패했던 기억이 있다. 좀더 알기 .. 2024. 4. 2.