반응형

spring 5

[Spring] Spring Security

개요 Application의 보안(Authentication & Authorization)을 담당하는 스프링 하위 프레임워크이다. Spring Security는 인증과 인가에 대한 부분을 Filter 흐름에 따라 처리하고 있다. 보안과 관련해서 체계적으로 다양한 옵션들을 제공해주고 있다. Authentication & Authorization Authentication은 인증 (로그인), Authorization은 인가(접근 허용)을 의미한다. Authentication은 그야말로 접근자(사용자)의 신원을 확인하는 프로세스이고, Authorization은 누가 무엇을 할 수 있는지 결정하는 규칙이다.Spring Security는 기본적으로 인증(Authentication)절차를 거친 후에 인가(Autho..

ahnnyung ,/Spring 2022.03.25

[Spring Security] Access Token & Refresh Token

시작하기에 앞서 Access Token이란? 사적 리소스(private resource)에 접근하는 REST API에 대한 모든 요청에 토큰이 포함되어 있는지, 또 해당 토큰이 유효한지의 여부를 검증함으로써 인증 절차(로그인)를 수행할 때 사용하는 토큰을 Access Token이라 부릅니다. 이러한 Access Token은 수명이 있다. 수명이 끝나면 해당 토큰을 이용하여 API 서버에 데이터를 요청했을 때 API 서버는 더 이상 정보를 제공하지 않는다. 그럼 어찌해야하는가? Access Token을 재발급 받아야한다. 그러나 그때마다 사용자에게 다시 로그인을 하여 Access Token을 발급받아라~ 하기에는 무리가 있다. 주변을 보아도 아무리 오랜 시간 로그인을 유지하면서 지속적으로 사이트를 사용하여..

ahnnyung ,/Spring 2020.12.15

[Spring Rest API] @CrossOrigin을 줬는데도 CORS 에러가 발생할 때 (CORS preflight 오류)

Spring Security를 사용하여 로그인/인증을 구현했다. 로그인을 통해 JWT토큰을 발급해주고 Frontend에서 발급받은 JWT토큰을 헤더에 포함하여 Request를 보내야 JwtAuthenticationFilter를 통해 JWT토큰이 확인되어야 기존 API를 사용할 수 있도록 구현하였다. 구현을 완료한 뒤 포스트맨을 통해 테스트해봤을 때는 문제없이 잘 동작했다. 하여 서버로 배포한 뒤 얼마 지나지 않아 Front작업하는 팀원으로부터 CORS에러가 난다는 얘기를 들었다. 분명 이전포스팅때의 경험을 살려 다음과 같이 @CrossOrigin어노테이션에 받는 입장의 allowedHeaders로 해당 JWT토큰값을 가지고있는 "X-AUTH-TOKEN"헤더를 추가해줬음에도 에러가 발생하였다. 혹시 몰라서..

[Spring Rest API] REST API 설계 규칙 - 1

규칙 Rule1: 도큐먼트 이름으로는 단수 명사를 사용하여야 한다 Rule2: 컬렉션 이름으로는 복수 명사를 사용하여야 한다. Rule3: 스토어 이름으로는 복수 명사를 사용하여야 한다. Rule4: 컨트롤러 이름으로는 동사나 동사구를 사용해야 한다. Rule5: 경로 부분 중 변하는 부분은 유일한 값으로 대체한다. Rule6: CRUD 기능을 나타내는 것은 URI에 사용하지 않는다. Rule7: URI 쿼리 부분으로 컬렉션이나 스토어를 필터링할 수 있다. Rule8: URI 쿼리는 컬렉션이나 스토어의 결과를 페이지로 구분하여 나타내는 데 사용해야 한다. 메소드 규칙 CRUD 기능을 나타내는 것은 URI에 사용하지 않는다 PUT 메서드는 리소스를 삽입하거나 저장된 리소스를 갱신하는 데 사용해야 한다. P..

[Spring] Spring MVC Request Lifecycle (Filter, Interceptor, AOP 차이 및 정리)

요청에 대한 실행순서 Filter → Interceptor → AOP → Interceptor → Filter 순으로거친다. 실행 순서를 보면 Filter가 Dispatcher servlet 바깥쪽인 가장 외부, Interceptor가 Dispatcher servlet 다음으로 존재, 그리고 그 안에 AOP가 있는 형태이다. 1. Filter Filter는 Dispatcher servlet 앞단에서 스프링 컨텍스트 외부에 존재하여 스프링과 무관한 자원에 대해 동작한다. 요청과정에서 요청내용을 변경하거나 여러가지 체크를 수행할 수 있고, 응답과정에서도 자원의 처리가 끝난 이후의 응답내용에 대해서도 변경이 가능하다. 보통 web.xml에 등록하며 일반적으로 인코딩 변환 처리, XSS방어 등의 요청에 대한 처..

ahnnyung ,/Spring 2020.11.24