RSA 검증 기능 구현 - PublicKey.txt 에 의한 검증

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

springSecurity

목록 보기
60/75

  • 퍼블릭키 파일을 이용해 검증 로드

  • 코드를 통해서 파일을 읽어 온다.

  • readPublickey 파일로 부터 데이터를 가져온다음 최종적으로 바이트배열로 변환해서 인자로 넘겨줌.

코드

  • 토큰을 서명하고 발행할때 개인키가 필요하니 키툴에 의해 받을 privatekey 선언

  • 개인키를 가지고 토큰을 발행한다.

  • 퍼블릭키 파일을 통한 서명이 가능하도록 빈을 하나 만든다.

  • 아까 그림에서 명령어를 입력하고 질의에 대한건 테스트니 엔터로 패스를하자

  • 하나의 파일 생성됨

  • 키스토어에 엔트리가 하나 포함되있다
  • 즉 프라빗키를 의미하는 거다.
  • 인증서나 공개키를 얻을 수 있음 개인 키로

  • 호출시점에 개인키와 공개키를 만드는 작업을 하자.

  • 스프링 부트가 초기화할때 어플리케이션 러너라는 인터페이스가 있는대

  • 그 인터페이스를 초기화 한다음 호출해준다 호출 시점에 실제 개인키와 공개키를 작성해서 생성하도록한다.

  • 클래스이름은 키추출 -> 인터페이스 선언 하고 빈으로 선언

  • 조금 전 우리가만들었던 토큰을 서명하고 발행하는 클래스 RsaPublickKeySigner

  • 우리가 생성한 개인키를 전달할 거다.

  • 그러면 토큰을 서명하고 발행할 것이다.

  • key 최상위 인터페이스 여러가지 키를 구현할 수 있는 인터페이스

  • 개인키로 생성된 타입이면? 인증서를 얻고

  • 인증서를 가지고 공개키를 얻는다, 키페어를 통해 공개키 , 개인키를 넣는다.

  • 파일이 존재하지않으면 파일이 생성하는 구문 생성

  • 검증 하는 필터하나를 만들어야된다

  • 검증기를 전달받아서 부모가 검증처리를 하도록 되어있는데
  • 실제 토큰을 발행하고 검증하는 모든 과정들은 키툴에 의해 생성되기 때문에
  • 그리고 스프링시큐리티는 퍼블릭키 정보를 가지고있는 .txt 가지고 검증하기 때문에
  • 스프링시큐리티 설정에 맡기자
  • 그래서 디코더를 이용한 검증을 하자

  • 생성자를 설정하고

  • 기존했던거 검증 이랑 비슷하게

  • 지금까지 만든 클래스를 실제 설정 클래스에 적용해야 된다.
  • 지난시간에는 yml 설정을 줘서
  • 해당설정에 맞는 디코더를 찾아간다.

  • 이제 공개키를 실제 로드해서 퍼블릭키에 정보를 가지고 있는 jwt 디코더 객체를 만들어서 검증해야되기 때문에

  • 설정을 해주고

  • 이제 서버를 기동하면 apiKey.jks 파일을 가지고 publicKey.txt 가 저장 하는데
  • 이 파일을 읽어들여서 공개키를 뽑아내서 실제 공개키 객체를 만들어서 디코더에 적용 해줘야됨
  • 처리과정에서 스프링시큐리티가 제공하는 설정 항목이 있는데.

  • 퍼블릭키 위치가 설정에 있을경우 해당 위에 사진 빈이 생성 된다.
  • 위 경로 정보를 통해 공개키를 뽑아서 검증에 사용 가능함.

  • 현재 설정 대로 실행이 되면

  • 이 디코더가 실행됨 조건에 의해서

  • 일단 서버가 기동을 되게하고 txt 문서 파일을 우선 만들어야 된다. location 주석하고 임시적으로 서버 기동

  • 키를 얻고 (RSA privateKey )

  • 키페어 저장

  • 생성 되었다.

  • 이제 주석 풀고 다시 기동


  • 먼저 set해서 퍼블릭키 위치를 리소스타입에 저장하고 있따
  • 리소스 타입은 클래스패스 안에있는 파일을 읽어와서 정보를 로드하는 객체이다

  • 공개키를 만들고 있는대 원리는
  • 퍼블릭키 정보를 다 가져온다음 (publickey.txt)
  • 인코딩을하고 , 퍼블릭키를 만듬
  • 파일 정보를 활용해서 RSA 공개키를 최종 만다.
  • 그래서 디코더검증할때 공개키를 넘겨준다.
  • 이 과정을 통해서 만든 공개키를 가지고 검증하게 되니 실제 키툴에 대한 검증이 된다.

  • 인풋스트림을 통해 카피하고있음

  • 리플레이스해서 빈값으로 대체 하고 있음

  • base 64 로 디코더함

  • 509 스펙으로 전환하고 공개키를 만듬

  • 설정을 고쳐주고

토큰 발행

검증

  • 이전챕터랑 검증은 똑같다
profile
어제의 나보다 한걸음 더

0개의 댓글