일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 도커빌드
- react
- 리덕스 공식문서
- 트리 회전
- .getClass()
- 리덕스
- vue.js
- VUE
- 오라클 병렬처리
- 리액트
- Java Reflextion API
- 네임드 뷰
- 애그리거트
- 커스텀 로그인
- 자바
- ACCESS_REFUSED
- forNmae()
- $emit()
- Express
- quert
- rabbitmq 에러
- 오라클
- exiting abnormally
- 자료구조
- redux
- 컴포넌트 주도
- REDIS
- AWS
- paraller
- EBS
- Today
- Total
목록스프링/스프링 시큐리티 (6)
개발정리

시큐리티 인증 과정 스프링 시큐리티의 인증 과정은 다음과 같습니다. -사용자의 요청을 필터가 가로챈다. -UsernamePasswordAuthenticaionToken의 인증용 객체생성(username,password)포함 -AuthenticationManager에게 authentication객체 전달 -AuthenticationManager가 적당한 provider를 찾습니다. -provider는 userdetails와 userdetailsService를 통해 아이디와 패스워드가 일치하는지 확인합니다. -최종적으로 securityContextholder에 authentication객체를 저장합니다. 스프링 시큐리티에서는 securityContext에 authentication객체를 저장하였을때 인증되었..

CSRF란? -CSRF공격은 웹 애플리케이션 취약점 -사용자의 의지와 무관하게 공격자가 의도한 행위를 웹사이트에 요청 CSRF의 조건 -사용자는 로그인 되어 있어야함 -사용자가 피싱 사이트 접속 CSRF 방어 기법 -Referrer 검증 -Security Token 사용 -일반적으로 CSRF공격 방어는 GET방식에는 방어 대상에 두지 않음 -스프링 시큐리티에서는 CsrfFilter가 보호 논리를 적용 -CsrfFilter는 CsrfTokenRepository를 사용해 CSRF토큰 관리 구현 @RestController public class HelloController { @GetMapping("/hello") public String getHello() { return "Get Hello!"; } @P..

권한 부여란? 식별된 클라이언트가 요청된 리소스에 엑세스할 권한이 있는지 시스템이 결정하는 프로세스 스프링 시큐리티에서 애플리케이션은 인증 흐름을 완료한 후 요청을 권한 부여 필터에 위임, 필터는 구성된 권한 부여 규칙에 따라 요청을 허용하거나 거부 userDetailsService로 사용자 세부정보 검색, UserDetails의 getAuthorities()메서드는 여러개의 GrantedAuthority를 컬렉션으로 가진다. 권한 부여 예제 @RestController public class HelloController { @GetMapping("/hello") public String hello() { return "Hello!"; } } /hello 엔드포인트에 접근했을 때 "Hello!"를 리턴하..

스프링 시큐리티를 설정하면 다음과 같은 요소들이 기본으로 구성된다. AuthenticationManager -인증을 수행 -authenticate() 메서드가 매개변수로 받은 authentication객체를 AuthenticationProvider에 전달하여 인증 수행 -인증이 된 Authentication객체를 리턴 한다. -인증이 실패하면 예외 발생 AuthenticationProvider -supports()는 현재 AuthenticationProvider가 특정 Authentication객체를 지원한다면 true 리턴 UserDetailsService -loadUserByUsername()을 통해 사용자이름을 가진 사용자 세부정보(UserDetails)를 가져온다.

HTTP BASIC 인증 동작 방식 1.클라이언트가 /hello엔드 포인트에 접근하려고 합니다. 2.서버가 401 에러를 보냅니다. 클라이언트가 보낸 요청의 헤더에 Authorization 이 없기 때문입니다. 3.클라이언트가 헤더에 basic인증 키를 포함하여 보냅니다 4응답이 제대로 이루어 졌습니다. 클라이언트가 보내는 Authorizatoin헤더의 구성 방식은 다음과 같습니다. Basic 이라는 접두사이 유저아이디:패스워드 문자열을 base64인코딩 한 문자열입니다. import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestCont..

스프링 시큐리티를 프로젝트에 등록하면 다음과 같은 서블릿 필터들이 생성 됩니다. 클라이언트가 서버로 요청을 보내면 그아래 수많은 필터들에 의해 인증이 진행 됩니다. 하지만 서블릿 필터는 서블릿 컨테이너에서 관리를합니다. 따라서 필터에서 스프링의 빈을 사용할 수는 없는 것입니다. DelegatingFilterProxy 스프링은 delegatingfilterProxy라는 필터를 제공합니다. 이 필터는 서블릿 컨테이너와 스프링 컨테이너 사이의 다리 역할을 합니다. SecurityFilterChain SecurityFilterChain은 FilterChainProxy에 의해 호출됩니다. securityFilterChain은 빈 입니다. 이것은 모든 스프링 시큐리티 지원의 시작점입니다. @Configuration..