WEB6 - Multi User Auth

수업을 마치며

 

 

 

지금까지 우리는 다중 사용자 시스템을 구축하는 방법을 살펴봤습니다. 물러나기에 앞서서 앞으로 여러분이 관심을 가져볼만한 주제를 소개해드리고 저는 물러나겠습니다.

 

 

 

현실에서는 사용자가 입력하는 정보를 신뢰해서는 안됩니다. 이메일, 비밀번호 이러한 정보의 유효성을 반드시 체크해야 합니다. 이렇게 입력한 값의 유효성을 체크하는 행위를 validation이라고 합니다. 키워드 validation 을 통해서 유효성을 체크하는 여러가지 방법을 찾을 수 있을 것입니다. 웹개발을 하는데 있어서 가장 지치고 힘든 것이 바로 이 유효성 체크라고 해도 과언이 아닙니다.

 

 

 

유효성을 체크하는 방법은 두가지 방법이 있습니다. 하나는 웹브라우저 자바스크립트 등을 이용해서 처리하는 것이고, 다른 하나는 서버 쪽에서 처리하는 것입니다. 근본적인 것은 서버 쪽에서 체크하는 것이고, 브라우저에서 처리하는 것은 사용자의 편의성을 높여줍니다. 둘 다 병행해야 하고, 특히 서버쪽 체크는 반드시 해야 합니다.

 

 

 

이 수업을 만들면서 제가 제일 걱정되는 부분이 비밀번호 처리 부분입니다. 사용자의 비밀번호는 시스템 관리자도 원천적으로 볼 수 없도록 암호화해야 합니다. 이를 위해서는 hash, salt, key stretching과 같은 여러 기법이 사용됩니다. 결과적으로 bcrypt, scrypt와 같은 방법을 사용해야 합니다. 이런 수단 없이 사용자의 비밀번호를 입력 받으면 절대, 절대 안됩니다. 비밀번호에 대한 원리를 찾아보세요. 흥미진진합니다.

 

 

 

우리는 이메일을 통해서 인증을 구현하고 있습니다. 그런데 사용자가 정말 그 이메일의 주인이 맞을까요? 이것을 체크하기 위해서는 우선 이메일 인정을 하기 전에는 기능의 사용을 제한 할 필요가 있습니다. 또 랜덤한 비밀문자를 만들어서 이메일을 통해서 전송했다가 그 비밀문자를 시스템에 입력하면 그 때 활성화를 해주면 되겠죠. 이를 위해서는 이메일을 전송하는 방법이 필요하고, 데이터베이스에 사용자가 인증을 했는지 여부를 체크할 필요도 있을 것입니다.

 

 

 

또 사용자의 기밀정보를 보관하는 것은 매우 부담스러운 일입니다. 이런 일을 구글이나 패북 같은 기업에 위임하고, 우리 서비스는 사용자의 식별자만을 유지하는 전략도 최근에는 많이 사용하고 있습니다. 이를 연합이라는 뜻의 federated 식별이라는 뜻의 identity을 붙여서 federated identity 혹은 federeated authentification이라고 하고, 한국에서는 타사 인증이라고 부르기도 합니다. 이런 주제에도 관심을 가져보세요.

 

 

 

이렇게 다중 사용자가 되면 시스템의 복잡도가 기하급수적으로 높아집니다. 다중사용자가 능사는 아닙니다. 다중사용자를 도입하기 전에 그 경제성을 꼼꼼하게 따져보시는 현명함이 필요합니다.

 

 

 

자 여기까지입니다. 다중사용자 시스템이 어떻게 동작하는지 감이 오시나요? 다중사용자 시스템을 통해서 여러분의 애플리케이션은 개인이 사회가 되는 혁명적인 변화를 맞이하게 될 것입니다. 고생하셨습니다. 축하드리고요.

 

 

 

지식지도

관련된 지식의 지도입니다. 지도를 참고해서 스스로 학습 경로를 탐험해보세요.

 

 

 

수업소식

아래 채널에 구독하시면 새로운 온/오프라인 수업이 있을 때 알려드립니다. 

 
 
 

댓글

댓글 본문
  1. 김윤석
    21.05.04
  2. jeisyoon
    2021.03.30 Express Multi-user Authentication - 완강
    감사합니다.
  3. 생활둘기
    2021 2 18
  4. 수두니
    혹시 PM2 error: Error: No script path - aborting 문제 해결하신 분 계실까요 ㅠㅠ?
  5. 쑤우
    완료했습니다. 감사합니다.
    많이 왔다고 생각했는데 아직도 갈길이 멀다는 생각이 드네요.ㅋㅋ
  6. 착한얼굴에그러치모탄태도
    감사합니다
  7. 이경훈
    감사합니다. 완료 했습니다. 나름 정리해 보았습니다.
    https://rain2002kr.tistory.com/365

    ^^
  8. 홍콩돼지
    교육이다보니 너무 세세하게 다 말 해줘야 하다 보니 그러신것같아요.. ㅋㅋㅋㅋ 하는사람도 지치는...
    근데 진행 하시는 걸 죽 본 덕분에 아 nodejs는 웹페이지 빌드를 위한 백엔드 보다는 순수하게 API만을 위한 백엔드에 써도 괜찮을것 같다는 생각이 들어요...!
    웹서버 기능을 같이 하고, 라우팅에 제약이 적고, middlewear로 인해서 동작 처리가 자유로우니까요....!!
    또 API에서 json형식을 많이 쓰는데, javascript의 최강점인 '그 자체가 json' 이라는 것도 있고여 ㅋㅋㅋㅋ
    html는 개별 페이지로 있어야 개발 툴에서 문법체크도 하는데 php는 html 문서를 직접적으로 만들고 접근하는 대신 nodejs는 nodejs쪽에서 문자열로 response.end() 함수에 넣어야 되니까요.. 각각 다 장단점이 있는것 같아요
    대화보기
    • 굼벵이
      완료
    • 와우! "개인이 사회가 되는 혁명적 변화". 계속 나아 가봐야겠습니다~
    • heychs
      끝 감사합니다
    • 좋은 강의 정말 감사드립니다. 어떤 유료강의보다도 수준 높은 최고의 웹앱강의가 passport와 다중사용자에서 조금 어그러진 것 같아 안타깝지만 그래도 너무너무 감사드립니다.
    • jo_onc
      저는 개인적으로, 순수 자바스크립트를 심도있게 배워보고 싶네영
      대화보기
      • jo_onc
        감사합니다!
        다른 수업으로 가즈아~!
      • 삼고잉
        잘 읽었습니다
      • 김시훈
        앞으로 어떤 수업들을 다룰 계획인지 공유해주실 수 있나요?
        (전 개인적으로 백앤드 공부는 어느정도 된 것 같으니 react.js를 배워서 프론트를 강화해보고 싶습니다!)
      버전 관리
      egoing
      현재 버전
      선택 버전
      graphittie 자세히 보기