2020-11-11(Wed)

  1. 학습 날짜 // 2020-11-11(수)

  2. 학습시간 // 9:00~22:00

  3. 학습 범위 및 주제 // base64, chunked encoding

  4. 동료 학습 방법 // sanam, yohai님과 협업함

  5. 학습 목표 // chunked encoding 구현에 필요한 고민/판단을 마무리한다.

  6. 상세 학습 내용

주거문제로 화요일은 팀원들에게 온전히 맡겼는데, 보안인증헤더를 잘 구현해주었다. 따라서 잘 구현되었는지 학습/검증하는 시간을 가졌다.

보안인증헤더의 작동플로우는 아래와 같다.

  1. 클라이언트가 보안 구역(realm)에 해당하는 리소스를 요청하면 보안 관련 헤더를 담아서 응답으로 보낸다.

  2. 클라이언트는 이 보안 관련 응답을 401 에러코드와 WWW-Authorzation 헤더를 받고, 브라우저가 이에 해당하는 id, password 팝업을 띄워줌으로써 입력을 받을 수 있게 해준다. 이제 id, password를 입력한 후 엔터를 누르면 브라우저는 다시 웹서버에 리퀘스트를 보내는데 이번에는 사용자가 입력한 아이디와 비밀번호가 Authonticate 헤더를 가지고 value 값으로 들어간다. 이 때 base64로 인코딩되어 들어간다.

  3. 이후 웹서버는 이 값을 base64로 디코딩하고 auth_basic_user_file 파일에 입력되어 있는 값과 비교한다. 만약 값이 다르면 403 에러를 클라이언트에게 전송하고 값이 같다면 보안 영역페이지를 보여준다.

또한 raw_body를 인코딩하여 chunked_body로 만드는 encodeChunkedBody 함수를 만들어 테스트를 마쳤다.

  1. 학습 내용에 대한 개인적인 총평

아무래도 subject에서 허용되어있는 헤더나 함수가 제한되어있다보니 직접 만들어써야하는 유틸함수들이 있습니다. 가령 오늘 만든 itosHex 함수가 그러했는데, 구현되어있는 라이브러리 함수로는 원하는 결과를 낼 수 없어서 그냥 직접 구현했네요. 이 때 '아 우리가 그래도 기초를 소홀히 하지는 않았구나' 싶었습니다. 그리고 팀원들이 적정한 수준의 열정을 가지고 기대 이상으로 믿음직하게 기능을 구현해주니 팀프로젝트의 묘미를 맛보았습니다. 즐겁네요.

다음 학습 계획

  • Transfer-Encoding 헤더 구현

Last updated