인증


회원가입, 로그인,로그아웃 기능을 구현 , 더 큰 개념인 인증(authentication)에 대해서 알아보자

최근 프로젝트가 대부분 Firebase 서비스를 이용하다보니 많은걸 까먹어서 인증에 대해 한번 정리하고자 하는 차원에서 적어본다..

참고로 말하자면 클라이언트,서버,데이터베이스 모두 다루면서, Full Stack개발 환경에서의 전체적 흐름 및 작동을 직접 확인하는 것이 가장 좋은 학습 방법이다.

Stateless


‘인증 뭐 별거인가? 그냥 데이터베이스에서 회원 조회한 다음 비밀번호 비교해서 들여보내주면 되는거 아니야?’ 라고 간단하게 생각했던 시절이 있었다.. 하지만 Stateless라는 개념을 알게되면 위와 같은 말은 할 수 없을거다. HTTP는 비연결성과 상태없음이란 특징을 지닌다. 어떠한 상태(state)를 계속 지니고 있지 않는다. 요청(request)를 보내고 응답(response)를 받으면 그것으로 끝이란 얘기 이러한 특성때문에 같은 데이터를 똑같이 불러오고 싶어도 매번 요청을 해야한다. 근데 여기에 인증이 필요하다면? 웹은 어떤 상태를 유지하고 있지 않기 때문에 계속 인증을 해줘야 응답을 받아볼수 있는것이다.

ex) 위와 같은 특징을 간과하고 서비스를 만들었을 경우

서비스 : 님 누구? 비밀번호 대셈 고객 : 나 **인데 비밀번호 여기 서비스 : ㅇㅋ 통과 고객 : 그럼 이제 내가 받은 메세지 보여줘 서비스 : 님 누군데 보여달라함? 비밀번호 대셈 고객 : 뭐하는거냐고 지금

그럼 이 로그인을 유지하는 방법은 뭘까?

로그인 유지는 어떻게 하는가?


위와 같이 서비스가 운영된다면 고객들은 모두 떠날 것 이다. 그렇다면 어떻게 로그인을 유지시킬 수 있을까? 비밀번호를 입력해서 한 번 통과 되면 앞으로는 계속 비밀번호를 말해줄 필요 없이 증표를 주고 이동할 때마다 보여주면 되지 않을까? 그래서 밑의 개념들이 나오게 되었다.

증표에 해당하는 개념이 SessionToken이다

Session을 이해하려면 cookie에 대한 이해가 필요해서 cookie도 정리를 해보았다.