728x90

Spring Boot Security 를 적용한 예시 화면이다.

로그인을 누르면 공개키 정보를 서버에서 가져오는 걸 콘솔화면에 출력되도록 설정하고 확인하는 과정이다.

 

 

로그인 정보를 입력하고 이후 결과 화면을 보면

 

아이디 정보와 비밀번호가 RSA 암호화된 것을 확인할 수 있다.

sessionId 는 RSA 암호화/복호화 KEY 쌍을 사용자별로 일정시간동안만 유지될 수 있도록 구현했다.

로그인이 정상적으로 잘 되면 accessToken 정보를 반환하도록 테스트 했다.

 

JWT 토큰에 대한 강좌는

https://www.youtube.com/watch?v=NPRh2v7PTZg&list=PLJkjrxxiBSFCcOjy0AAVGNtIa08VLk1EJ

 

강좌 시리즈가 설명이 너무 잘 되어 있어서 이 동영상 강좌를 따라서 연습했다.

이 동영상 강좌는 Front-End 에 대한 부분은 POSTMan Web 사이트를 이용하여 테스트를 하기 때문에 실제 환경 구성과는 거리가 있을 수 있다.

 

Windows 11 환경에서 인털리전스 IDEA 툴과 VSCode 로 Spring Boot 예제와 React 예제를 만들어서 구현 테스트 하는 것까지는 어렵지 않게 구현하는데 성공했다.

 

클라우드 서버에 올리는 걸 테스트 하면서 삽질을 엄청나게 했다.

React http://localhost:3000, Spring Boot http://localhost:8080 으로 기본 설정되기 때문에 윈도우에서 둘 간에 어려움없이 개발 테스트를 할 수 있다.

하지만 Rocky 9.5 Linux 서버가 있는 환경에서 구동 테스트를 시도했더니 엄청난 난관에 부딪치게 된다.

문제에 부딪치면 밤을 세워서라도 해결하고픈 욕망 때문에 어젯밤을 꼴딱 샜다. 그리고 해결하고 정리를 하면서 기록을 해두고 있다. 지금 이 순간에는 알지만, 시간이 지나면 금방 잊어버리게 된다.

기록된 결과는 이 글을 보는 방문자에게도 도움되지만, 나에게 가장 큰 도움이 된다.

 

JMeter 로 로그인 처리하는 방법을 배우면서 토큰 인증에 대한 이해가 필요했고, 토큰 인증에 대한 이해를 위해서 샘플 코드를 직접 구현하고 실 사이트에서 테스트해보고, 다시 Spring Boot 환경 구성을 해보면서 결과를 얻으려고 한다.

지금 정리하는 것은 Spring Boot 를 단계적으로 배워서 정리하는 것이 아니라 골인 지점에 대한 구현을 단기 속성으로 하고 나서 거꾸로 Spring Boot 동영상 강좌를 듣고 있는 중이다.

 

PHP 로 구현한 Secure Coding 코드 기반으로 보안 검증을 몇년간 받아보면서 시큐어코딩에 대한 이해도가 높아졌고, 그걸 기반으로 React 와 Spring Boot 기반의 RSA 암호화/복호화 코드를 구현 테스트 했다.

Javascript 에서 RSA 암호화로 패스워드(password)를 암호화해서 전송하고, 서버단에서 RSA 암호화 문자열을 복호화하여 DB에 있는 정보와 일치 여부를 확인한다.

이처럼 이종 언어간에 RSA 암호화/복호화하는 방법으로 결과가 성공이어야 한다.

구글링으로 구한 RSA 암호화/복호화 샘플이 이종 언어간에 제대로 동작되지 않는 걸 많이 경험한다.

Andorid 앱에서 RSA 암호화를 하고, Back-End 언어어서 RSA 복호화 처리를 하는 걸 구현해야만 보안 검증에 통과되기 때문에 이때도 수많은 삽질을 했었고, 이종 언어간에 동작하는 함수를 구현해서 사용했었다.

 

chatGPT 가 나날이 발전하여 많은 도움을 받고 있지만, 잘못된 정보를 전달하기도 해서 시행착오를 많이 겪는다.

Android APP 에서 구현해서 사용했던 함수를 Spring Boot 용으로 변환 요청을 했더니 엉터리로 결과를 반환한다.

이종 언어로 결과 반환을 요청하면 대부분 실패된 결과를 제공하더라.

728x90
블로그 이미지

Link2Me

,