david's daily developer note

[BE] 포스트맨 + 엑셀 조합으로 API 실행 자동화 -2 (RSA) 본문

[Develop] Web/Back-end

[BE] 포스트맨 + 엑셀 조합으로 API 실행 자동화 -2 (RSA)

mouse-david 2023. 9. 19. 23:55
728x90

이전 글에서, 포스트맨 API 묶음 자동화를 수행하기 위하여 Collection을 생성하고, 인증 요청 정보를 다른 요청에도 자동 적용될 수 있도록 구성하였다.

2023.09.19 - [[Develop] Web/Back-end] - [BE] 포스트맨 + 엑셀 조합으로 API 실행 자동화 -1 (Authorization)

이번 글에서는 프론트단에서 암호화된 정보를 요청하는 것을 가정하고, 포스트맨에서 지원하는 암호화 모듈과 외부 JS 모듈을 활용하여 암호화하고 API 파라미터로 활용하는 방법을 설명한다.


다음은 포스트맨에서 활용 가능한 암호화 알고리즘에 대한 블로그 문서이다.

https://blog.postman.com/what-is-cryptography-how-to-encrypt-data-in-postman/

 

What Is Cryptography? And How to Encrypt Data in Postman | Postman Blog

Keep your data secured over an insecure public network. Let’s dive deeper into cryptography, how it works, and how to use crypto encryption with the Postman API Platform.

blog.postman.com

문서에서는 AES,DES,MD5, SHA-256 방식의 알고리즘을 제공한다.
하지만 포스트맨에서 기본 제공하는 CryptoJS에서는 RSA 암호화 방식을 제공하지 않는다. (일단 나는 못찾음)

막강한 포스트맨은 JS 모듈을 가져오고 사용할 수가 있다.
이 글에서는 jsrsasign-js를 사용하여 RSA 암호화를 해보겠다.

jsrsasign-ja 모듈 가져오기

1. GET 요청하나를 만들고 다음 URL로 작성한다.

http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js

2. 생성한 요청의 Tests에 다음 구문을 작성한다.

pm.globals.set("jsrsasign-js", responseBody);

해당 요청을 수행하면, 라이브러리가 글로벌 변수에 저장된다.
해당 요청은 Collection이 반복 수행되기 전에 한번만 수행되면 된다.

 

jsrsasign JavaScript API Reference - Index

 

kjur.github.io

암호화된 정보로 요청 만들기

1. 암호화된 정보가 필요한 요청을 하나 만든다. 파라미터에는 이름과 암호화가 필요한 비밀번호를 가정하였다.

그림에서, {{PASSWORD}}는 Collection Variables에 등록된 변수이다.

2. API 요청전에 입력된 비밀번호를 암호화하는 코드를 추가한다.

Pre-request Script는 API 요청전에 수행하는 스크립트 작성 공간이다. 

var navigator = {}; //fake a navigator object for the lib
var window = {}; //fake a window object for the lib
eval(pm.globals.get("jsrsasign-js"));

// https://kjur.github.io/jsrsasign/
// RSA signature generation
var rsa = new RSAKey();
rsa.setPublic(pm.collectionVariables.get('MODULUS'),pm.collectionVariables.get('EXPONENT'));
var password = rsa.encrypt('password88@A');

pm.collectionVariables.set('PASSWORD', password);

1-3번 줄은 모듈 사용에 필수적인 구문이며, 모듈을 Import하는 과정이다.
아래 구문은 MODULUS, EXPONENT을 입력받고 주어진 비밀번호를 암호화하는 구문이다.
(일반적으로 MODULUS, EXPONENT는 서버로 부터 받음으로, 생성하는 것은 생략)


최종 암호화된 비밀번호는 이전 단계에서 설정한 {{PASSWORD}} 변수에 저장되고, 요청 파라미터에 자동 적용된다.

 

 

다음 글 보기

2023.09.19 - [[Develop] Web/Back-end] - [BE] 포스트맨 + 엑셀 조합으로 API 실행 자동화 -3 (HTML Parsing)

728x90