마르코의 개발 일기

고정 헤더 영역

글 제목

메뉴 레이어

마르코의 개발 일기

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (88)
    • JAVA (5)
    • Spring (9)
    • SpringSecurity (20)
    • 알고리즘 (1)
    • Database (10)
    • AWS (5)
    • 공학지식 (1)
    • SpringBatch (6)
    • SpringCloud (10)
    • Proxy (2)
    • Linux (1)
    • Node (2)
    • 보안 (3)
    • 암호화 (5)
    • 소켓 (1)
    • 프로젝트 일기 (4)

검색 레이어

마르코의 개발 일기

검색 영역

컨텐츠 검색

SpringSecurity

  • Spring Security [CSRF ATTACK]

    2022.07.27 by 성찬우

  • SpringSecurity [SecuriyContextPersistenceFilter]

    2022.07.27 by 성찬우

  • SpringSecurity [Async] 비동기 처리

    2022.07.22 by 성찬우

  • SpringSecurity [WebAsyncManagerIntegrationFilter]

    2022.07.15 by 성찬우

  • SpringSecurity [JwtBuilder]

    2022.07.06 by 성찬우

  • SpringSecurity [JWT 메소드 구경하기]

    2022.07.06 by 성찬우

  • SpringSecurity [ExceptionTranslationFilter]

    2022.07.06 by 성찬우

  • SpringSecurity [FilterSecurityInterceptor]

    2022.07.04 by 성찬우

Spring Security [CSRF ATTACK]

CSRF 어택 이란? 인증된 유저의 계정을 사용해 악의적인 변경 요청을 만들어 보내는 기법이다. CORS를 사용 할때 특히 주의해야하는데 타 도메인에서 보내오는 요청을 허용하기 때문이다. CSRF는 즉 원치 않는 요청을 만들어 보내는 것이라 할 수 있다. 특히, HTTP 는 히든 필드가 있기 때문에 우리가 생각했던 곳이 아닌 다른곳으로 요청을 보내서 예를 들어 공격자 웹사이트에서 은행으로 FORM을 보내 돈을 인출 할 수 도 있다는 것이다. 더 쉽게 말하자면 CORS 같이 다른 도메인에서도 우리의 API를 요청을 해야하는 상황이 나온다면 이를 악용하기 쉽다 라는 것이다. 그래서 우리 Spring Security 는 CSRF Filter를 제공한다. CSRF필터는 CSRF토큰을 사용하여 이를 방지 하게 해..

SpringSecurity 2022. 7. 27. 02:27

SpringSecurity [SecuriyContextPersistenceFilter]

우리들의 로그인 정보는 왜 계속해서 유지가 되는것 일까? SecuriyContextPersistenceFilter 덕분인데 기본적으로 SecurityContext Repository라는 인터페이스에 위임을 해서 ContextHolder에서 읽어온다. 그리고 이 SecurityContext Repository 의 구현체에는 HttpSessionSecurityContextRepository 이다. 즉, http Session 에서 읽어 오는 것이다. Security Context Holder 에 이미 유저의 정보가 저장이 되어있다면 사용을 하지 않는게 맞다. 정리하자면 SecurityContextRepository 를 사용해서 기존의 Context를 읽어 오거나 초기화 할 수 있다. 기본적인 전략은 바로 H..

SpringSecurity 2022. 7. 27. 02:07

SpringSecurity [Async] 비동기 처리

Async를 왜 사용하는지 부터 확인을 해봐야한다. 우리는 왜 굳이 비동기 프로그램을 사용하게 되는것 일까?? 동기와 비동기의 가장큰 차이는 처리의 순서가 있냐 없냐 정도라고 생각한다. 즉, 동기의 경우 먼저 처리되고있는 요청이 느려지는 순간 다음으로 처리되어야 하는 요청들도 막힌 1차로 도로처럼 밀리게 되어있다. 하지만 비동기의 경우 1차로가 아닌 4차로 5차로로 길을 터준다고 생각 하면 된다. 여기서 차로를 쓰래드로 생각하면 조금더 프로그래밍 적으로 이해하기 쉬울 것같다. 즉, 쉽게 생각하면 멀티쓰래드를 통한 효율적인 일 처리라고 생각하면 된다. 사용 하는 기본적인 셋팅. @Async 어노테이션 @EnableAsync + TreadPool 설정(안할시 디폴트값으로 설정) 우리가 /tests 로 요청을..

SpringSecurity 2022. 7. 22. 21:38

SpringSecurity [WebAsyncManagerIntegrationFilter]

Async = 비동기 Web 비동기 관리자 통합 필터이다. 우리가 오늘 해볼 것은. 다른 Thread 안에서 SecurityContextHolder안에 있는 Principal 정보는 동일한지 확인해 볼 것이다. Callable이라는 자바에서 지원해주는 기능을 사용할 것이다. 우선 컨트롤러에서 @GetMapping("/tests") @ResponseBody public Callable testController(){ } 여기서 return new Callable 해주면 바로 overice 메소드가 나타난다. @GetMapping("/tests") @ResponseBody public Callable testController(){ [1]-----------여기에 들어가는 설정들------------- re..

SpringSecurity 2022. 7. 15. 02:49

SpringSecurity [JwtBuilder]

public static JwtBuilder builder() { return new DefaultJwtBuilder(); } 기본적으로 우리가 토큰 생성을 하게 될때 쓰일메서드다. 유저가 로그인을 하게될때 해당 url 에서 정보를 받아서 username, password 를 채크하고 Athentication 을 생성후에 token 값 설정하고 생성하고 response 한다. 우리가 오늘 살펴볼 부분은 값을 설정하고 부분이다. jwtTokenProvider 라는 클래스를 주입해서 createToken(String userId) 이라는 메소드를 사용해서. params 로 받은 부분을 claims 에 추가하고 setClaims 를 해준다. 저 builder() 라는 메소드에는 어떤 매소드들이 존재할 까? p..

SpringSecurity 2022. 7. 6. 04:13

SpringSecurity [JWT 메소드 구경하기]

오늘은 jwt.class를 뜯어볼 것이다. 기본적인 설명 -> JSON Web Token 은 당사자 간의 정보를 json 형태로 안전하게 전송하는 간단하고 독립적인 방법을 정의하는 개방형 표준(RFC 7519)입니다. 이 정보는 digitelly signed 되어있기 때문에 확인 및 신뢰가 가능합니다. jwt 는 secret key 또는 RSA 또는 ECDSA 를 사용해서 공개/비공개 키 쌍을 사용하여 signed 될 수 있습니다. 구조 -> 각각 . 을 통해 구분된다. { Header코드 . Payload 코드 . Signature 코드 } Header: 토큰 유형과 해싱 알고리즘 타입을 정의 Payload: 토큰 발급자, 만료시간, 내용 등을 정의 Signature : 헤더와 페이로드 인코딩 값을 비..

SpringSecurity 2022. 7. 6. 03:23

SpringSecurity [ExceptionTranslationFilter]

단어 설명 AccessDeniedException : 인증에 대한 권한 또는 ACL권한이 없어서서 거부된 경우 AuthenticationException : 어떠한 이유로든, 인증 객체가 유효하지 않은 경우 던져지는 예외. 스프링 시큐리티 내부에서 인증에 실패하면 기본적으로 이 예외가 발생. ExceptionTranslationFilter.class의 설명 필터 체인 내에 던져진 모든 AccessDeniedException 그리고 AuthenticationException 를 처리합니다. 이 필터는 java 예외 그리고 HTTP 응답 간의 다리역할을 제공하기 때문에 필요합니다. 이것은 오로지 사용자의 인터페이스를 유지함에 필요하다. 이 필터는 실제로 보안 적용을 수행하지 않습니다. Authenticati..

SpringSecurity 2022. 7. 6. 01:07

SpringSecurity [FilterSecurityInterceptor]

AccessDecisionManager 를 사용해서 Access Control , 예외처리를 하는 필터이다. 대부분의 경우 FilterChainProxy에 제일 마지막에 들어있다. 최종적으로 접근이 가능한지 확인을 한다. public class FilterSecurityInterceptor extends AbstractSecurityInterceptor implements Filter { 부모클래스인 abstractSecuritInterceptor로 한번 들어가서 확인해보자. 확인해볼 메소드는 다음과 같다. this. accessDecisionManager. decide(authenticated, object, attributes) ; 를 보면 accessDecisionManager는 AccessDeci..

SpringSecurity 2022. 7. 4. 23:34

추가 정보

인기글

최신글

페이징

이전
1 2 3
다음
TISTORY
마르코의 개발 일기 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바