Dev

nest.js 에서 Swagger 문서 보안하기

고랑E 2024. 3. 22. 02:10
728x90

Swagger 문서에 왜 보안을 걸어야 할까?

 

실 서비스 중인 사이트에서 swagger 문서를 아무나 접근 할 수 있으면 어떻게 될까?

 

open api 를 제공 하는게 아니라면 모든 프로젝트 구조를 보여주는게 되지 않을까

 

그래서 해당 패키지를 설치하고 코드를 추가하자

 

npm install express-basic-auth

 

 

main.ts

import * as basicAuth from 'express-basic-auth';



    app.use(
        ['/docs'],
        basicAuth({
            challenge: true,
            users: {
                [process.env.SWAGGER_USER]: process.env.SWAGGER_PASSWORD,
            },
        }),
    );

 

 

해당 코드처럼 사용하는 이유

 

.env id 와 pw 를 관리해 코드에 하드코딩 안하고 환경변수로 지정

['/docs'], 해당 swagger 문서를 적어준다. 만약 없다면 모든페이지가 암호가 걸린다.

 

challenge 이유

 

 

대충 변역하면

challenge 옵션은 기본적으로 false 이고

false 상태면 미인증된 요청에 대한 응답에 WWW-Authenticate 챌린지 헤더를 추가하지 않는데

브라우저에서 인증이 필요한 페이지에 팝업을 표시하지 않음

true 상태면 WWW-Authenticate 챌린지 헤더를 추가하고

브라우저에서 인증이 필요한 페이지에 팝업을 표시함

 

 

다음은 challenge 가 false 일때

 

true 일때

 


 

참고 링크

https://www.npmjs.com/package/express-basic-auth

 

express-basic-auth

Plug & play basic auth middleware for express. Latest version: 1.2.1, last published: 2 years ago. Start using express-basic-auth in your project by running `npm i express-basic-auth`. There are 415 other projects in the npm registry using express-basic-au

www.npmjs.com