MAC 검증 기능 구현 - JwtAuthorizationMacFilter

존스노우·2023년 9월 11일
0

springSecurity

목록 보기
56/75

  • 왼쪽은 토큰이 발행되는 순서 , 오른쪽은 토큰을 검증

  • JwtAuthenticationFilter 이전 시간에 이미 작성

  • 필터가 하는역할은 인증객체 만들고

  • 사용자가 승인을 위해 아이디 패스워드를 전달하면 인증 토큰에 전달하고

  • 다시 인증 매니저에 전달하면 아이디 패스워드에 대한 인증처리를 함

  • UserDetailsSErvice 가 사용자가 있는지 확인

  • MacSecuritySigner 우리가 만들 클래스

검증

  • MACSingner vs MACVerifier

리소스 서버

  • 토큰에 대한 검증이기 때문에 세션을 사용하지 않겠다.
  • 2개의 필터를 만들어서 설정 한다
  • jwt인증 필터 -> 사용자의 승인과 토큰을 서명과 발행 필터(지난시간에 만듬)

  • 세션 사용하지 않게 설정

  • MAC 방식의 토큰을 서명하고 발급하는 클래스

  • 토큰 생성
  • SignedJWT 여기서 서명을 해준다.
  • MACSigner 가 들어가야되는대 여기코드는 바뀌어 있다.
  • 시리얼라이즈를 하면 문자열로 토큰이 발행됨 .

  • 기존 인증 객체를 저장하던곳을
  • 토큰을 리턴하도록 변경
  • 토큰을 발행하기 위해서 클레임 정보중에 user객체가
  • 전달 되야되기 때문에 user객체를 가져옴
  • 토큰을 가져오고 리스폰스 헤더에 담는다 .

  • 서명을 위한 설정 빈들

  • 사용하려면 등록!

  • 토큰을 검증하는 클래스.

  • OncePerRequestFilter 동일한 요청에대해 한번만 처리되는 필터

  • 맥 검증만 하는 필터라 jwk 만 받는다.

  • 조건에 만족이 안돼면

  • chain.doFilter(request, response); 다음 필터로!

  • 각각 헤더 페이로드 시그니처 를

  • 여기 코드를 통해 속성으로 매핑.

  • MACVerifier 사용해서 검증

테스트

  • 토큰을 발급받고

  • 검증 api

  • 성공하고 서명 단계 시작
  • 서명이 끝나면
  • 검증 api를 날린다

  • 토큰을 발행하고 검증하는 과정
  • 인가서버에서 행하여야 하지만 리소스 서버에서 검증해봄
profile
어제의 나보다 한걸음 더

0개의 댓글