07/27 목

konut ko·2023년 7월 27일
0

더존비즈온5기

목록 보기
45/46

Spring Security

👻 Spring Security 가이드 (with. Spring boot 3.0) - 스프링 시큐리티란, 동작 과정, 사용 방법, JWT 발급

설명이 자세하니 읽어보자

  • spring security보안흐름

목적 : 단일 책임의 원칙 - 기능별로 쪼개져있음
방법 : Filter에 등록하는 방법, Provider로 제공하는 방법도 있다.
UserDetailService : 데이터베이스와 연동할 때 구현하는 부분, 실제 인증에 의해 인증된 객체는 UserDetails라는 인터페이스의 구현체임
실제 관리되는부분 : SecurityContextHolder - 보안에 관련된 부분을 직접적으로 access하는 부분.

예제파일 : securityDemo

인증(A/P 인증된 사람) -> 인가 (비회원/회원/시스템관리자) ->URL

권한 : user/manager/admin

권한은 OR
권한은 겹칠 수도 있음.
예) user이면서 admin인 경우

스프링 시큐리티는 /login 이라는 url이 기본으로 있음

실습 1

실습 2 : user 이면서 admin

모든 사람이 접근 가능
curl -v http://localhost:8090/api/v1/home
결과

회원가입완료
curl -v -X POST -H "content-type: application/json" -d "{\"id\":\"1000\",\"username\":\"masungil\",\"password\":\"1234\"}" http://localhost:8090/api/v1/join
결과

로그인
curl -v -X POST -d "{\"username\":\"masungil\",\"password\":\"1234\"}" http://localhost:8090/login
결과

유저 혹은 매니저 혹은 어드민이 접근 가능
curl -H "Authorization: Beare~~
(-H는 헤더를 의미)
결과

위 결과는 가짜고...
URL을 api/v1/admin/user로 했을 때는 아래와 같이 404에러가 떴다.

url 잘못 쓴거였다. admin/user이 아니고 admin/users

@EnableWebSecurity

SecurityConfig.java

filterChain함수명은 자유, return type과 parameter만 주의해주면 된다.

?

기존 쿠키,세션 : 세션은 서버메모리를 씀

대안으로 만든것이 토큰 :
토크은 서버에 저장하지 않음.
서버에서 생성하고 해석만 함.
브라우저쪽에 저장하는 대신 암호화를 함.
(쿠키는 암호화가 되어있는 데이터는 아님.)
토큰은 암호화를 기반으로 저장함.
브라우저에 저장하기 때문에 보안상의 위험이 있어서 사용 기간을 설정해준다. 기간이 만료되면 다시 설정해줘야 함.

jwt 서버쪽에서 토큰을 만들어주는 시스템 공부듕.. 세션을 사용할 필요가 없음

(SecurityConfig.java)
세션 사용 안한다고 설정
http 보안에 관련된거 다 사용 안한다고도 설정

  • DI(의존성 주입) : @으로 동작, 생성자함수에 주입

MyCustomDsl에서 AuthenticationManager객체(로그인한 인증객체)를 얻는 것이 핵심인데 http.build(); 실행 후 얻을 수 있음...

AuthenticationManager객체가 중요한 이유

JWT json web token

👻 [Spring] jwt란 - jwt 내부구조, 동작과정, 스프링에서 파싱하기

  • base64 : 정상적인 문자를 6bit로 끊어서 표현한다. => 글자 3개가 왜 4개가 .. 돼? 3*8 / 6 => 4

JwtAuthenticationFilter과 JwtAuthorizationFilter

profile
보초딩코라 틀린 내용 있을 수도 있습니다. 댓글 지적 환영

0개의 댓글