개발/library, framework

[Nest | swagger] Authorization Bearer 로 적용해야 하는데 Basic으로 적용되는 경우

prpn97 2023. 11. 20. 19:46

발단

 

  jwt토큰을 서버에서 보냈고, 스웨거에서 테스트했을 때 보낸 시점에서는 정상적으로 Authrization Bearer 로 보낸 것을 확인했다. 그 이후 스웨거에서 Authorization에 토큰을 넣어 보냈는데도 Authorization에는 basic으로 들어오는 것을 확인했다. 

 

 

해결 과정

 

1. 간단하다. 인가처리를 해야 하는 각 컨트롤러에 @ApiBearerAuth() 데코레이터를 넣어줘야 한다. 

 

 

2. 넣어주게 되면 아래와 같이 열린 자물쇠 모양 그림이 생긴다. 

 

3. 열린 자물쇠 모양이 그려져있는 api는 스웨거에서 토큰을 보내도록 장치를 마련해준다.

그리고 auth가 걸린 전체 api에 동일하게 적용하려면 우측 상단에 있는 초록색 Authorize를 클릭하면 되고,

혹은 해당 api에만 토큰을 적용하려면 자물쇠를 클릭해서 value에 Bearer를 제외한 값을 입력해준다.  

 

입력하고 아래 Authorize 를 클릭하면 위 스샷처럼 자물쇠가 까맣게 변하고, 서버에서 req.headers.authorization을 찍어보면 다음과 같이 정상적으로 Bearer를 동반한 값이 출력된다. 

 

코멘트

 

  내가 구글링을 잘 못했던 탓이겠지만,, 스웨거를 세팅할 때 bearer, jwt 등 세팅하고 끝난줄 알았는데, 별도로 데코레이터를 적용해줘야 하는지는 스웨거를 쓰면서 뒤늦게 알았다. 회사에서 노션에서 api명세서를 업데이트하는 부분을 간혹 놓치는 부분들이 있어 가끔 이슈가 있었어서 스웨거 도입을 요청하려고 하는데 이번 기회에 더욱 친해져야겠다. 

728x90