[NestJS] Postman auth에 토큰 보내기

2024. 8. 7. 19:48NestJs

728x90
반응형

서론

백엔드에서 socket.io를 Postman으로 테스트하는 도중, socket.io는 handshake에서 headers로 토큰을 보낼 수 있지만, 구글링을 통해 auth에 토큰을 보내야 한다는 것을 확인했습니다. 이를 바탕으로 auth에 토큰을 어떻게 보낼 수 있는지 조사해 보았습니다.

 

  getUserIdFromSocket(client: Socket): number | null {
    const authHeader = client.handshake.auth.token;
    const token =
      authHeader && authHeader.toLowerCase().startsWith("bearer ")
        ? authHeader.substring(7) // "Bearer ".length = 7
        : null;

    if (token) {
      try {
        const decoded = this.jwtService.verify(token, {
          secret: this.configService.get<string>("ACCESS_TOKEN_SECRET"),
        });
        return decoded.userId;
      } catch (error) {
        console.error("Invalid token", error);
        return null;
      }
    }
    return null;
  }

 

 

 

 

Postman을 사용하여 {token: "123"} 형태로 auth에 토큰을 보내 테스트해 보았지만, auth에 제대로 전달되지 않았습니다. 추가로 구글링을 통해 많은 개발자들이 쿼리 파라미터로 토큰을 보내는 경우가 더 많다는 것을 알게 되었습니다.

왜 auth에 보내는 경우와 쿼리 파라미터로 보내는 경우가 있는지 확인해 본 결과, 다음과 같은 이유를 찾을 수 있었습니다:

1. 초기 연결 문제: auth와 headers는 처음 연결 시에는 문제가 없지만, 그 이후에는 제대로 인식되지 않을 수 있습니다.
2. 보안성 문제: auth와 headers를 사용할 경우 보안성이 떨어질 수 있습니다.
이로 인해 많은 개발자들이 쿼리 파라미터를 사용하여 토큰을 전달하고 있었습니다. 쿼리 파라미터를 사용하면 인식되지 않는 문제를 방지하고 보안성을 높일 수 있기 때문입니다.

 

 

 

 

 

참고 자료

 

How to send authentication payload? · socketio socket.io · Discussion #4072

I am trying to use Postman to "connect" to a Socket.io server. Using a regular client in NodeJS would look like this: const io = io(url, { auth: { token: 123 } }); How to I pass this auth informati...

github.com

 

728x90
반응형