Basic Auth란? (+ Node.js로 basic Auth 구현하기)

min·2022년 1월 3일
1

참고
https://developer.mozilla.org/ko/docs/Web/HTTP/Authentication
https://hamait.tistory.com/416
https://velog.io/@gadian88/basic-auth-%EA%B5%AC%ED%98%84-%EB%B0%8F-%EC%84%A4%EB%AA%85

내일 basic Auth 쪽 접근이 필요 할 것 같아서 미리 사전 조사를 해본다. 인증 관련해서는 구현 해 본적이 없어서 기초를 다져보자.

Basic Auth

  • HTTP가 액세스 제어와 인증을 위한 프레임워크 중 가장 일반적인 방식

  • 서버는 사용자가 누구인지 식별 할 수 있어야 함으로 auth를 통하여 식별하여 접근 권한을 결정한다.

  • API 호출 시 http Authorization 헤더에 user id와 password를 base64로 인코딩한 문자열을 추가하여 인증하는 형식

    Q. base64가 뭔가요?

    • 8bit 바이너리 데이터 (ex: 실행 파일, zip파일)을 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자로 이루어진 스트링 형태로 바꾸는 인코딩 방식
    • 문자열을 기본적인 64개의 문자들로 변환해버리는 것
    • 초기 문자보다 데이터의 크기는 더 커지지만 공통적으로 사용 할 수 있기 때문에 많이 사용 됨
    • 질문 속 단어 정리 > 인코딩(Encoding) : 데이터의 형식에 대한 표준화, 처리 속도 향상, 공간 절약등을 위해 다른 형태나 형식으로 변환하는 것

그림으로 보는 Basic Auth

  1. 클라이언트가 api를 요청 한다.
  2. 서버는 사용자에게 401 Unauthorized 응답과 함께 WWW-Authenticate 응답 헤더로 권한 부여 방법에 대한 정보를 제공한다.
  3. 클라이언트는 Authorization 요청 헤더에 인코딩 된 비밀번호, 그 외 다른 인증 파라미터들을 인증 정보를 포함하여 다시 요청한다.
  4. 성공하면 정상적인 상태 코드를 반환한다. 추가적인 인증 알고리즘에 대한 정보는 Authentication-Info 헤더에 기술 한다.

장단점

  • 가장 크고 유일한 장점은 단순하고 편리함
  • 하지만 편리함과 같이 따라오는 보안 결함이 존재함으로 보안이 중요한 정보의 경우에는 basic auth를 통한 인증은 위험하다.

node.js로 basic auth request를 구현해보자

참고
https://airpage.org/xe/language_data/22001
https://stackoverflow.com/questions/38455043/node-js-request-promise-for-put-with-auth

지금 request-promise-native 모듈을 사용해서 http 요청을 하고 있어서 그렇게 큰 작업이 필요한거 같진 않지만 잘 해보자구

profile
발등에 불이 따뜻하다..

0개의 댓글