[회고록/trollo] 3일차 : nodemailer그리고 인증구현

katsukichi·2021년 4월 28일

회고록

목록 보기
3/16

passwordless

패스워드 리스가 뭐지 ?

이른바 비밀번호없는 로그인방식을 말하는데

요즘 트렌드가 점점 올라가고있다.

대표적으로는 AuthO 라는 플랫폼에서 제공하는 서비스만 끌어다써도

OAuth연결, passwordless인증이 다 해결되는것으로 알고있다.

허나. 이번 프로젝트에서는 노드메일러 라이브러리를 통해서 직접 구현해보려고한다.

참고한 페이지는 nomad coder홈페이지에서 로그인방식때 쏴주는 이메일 html을 참고했다.

모양새는 그럴듯한데 현재 심어져있는 부분에서

authrizationCode 사실 그냥 jwt인데 시간만료 개념만 존재하는

또는 우리가 내려준것을 확인하는용도로 사용하는 입장권개념으로쓴다.

일단 이메일을 열어봤다는 것에서

상대를 대기업 이메일사를 사용하는 유저로써 어느정도 신뢰를 맡기고 가겠다라는것이다.

검사하고, 이메일을 5분안에 받아서 링크를 타고넘어와야지만, 인증처리를 한다.

서버로 공격이 들어올수도있긴하지만.. 일단은 보안문제보다는 기능구현에 우선을 뒀다.

nodemailer

노드메일러라는 라이브러리가 있어서 찾아보고 사용했다.

기본적으로 http 프로토콜이아닌 smtp 통신이다.

심플 메일 트랜스 프로토콜? 아마그거인데

하루에

구글은 500통

네이버는 1000통 지원한다

그래서 네이버 계정을 새로팠다.

trollo라는 ID가 남아있다니 개꿀

굉장히 어드민 스러워져서 만족중이다.

네이버메일을 쓰고있는게 좀 웃길수도있지만..

우리는 아직 회사랄까 우리페이지 자체의 메일이 구현되있지않으므로 자체발송을 힘들다.

그래서 외부 메일을 사용한다.

https옵션도 껏다켯다 할수있다.

secure : true라던가.

그외에는 일단 authorizationCode생성 , 메일에 html심어두기 , 그 html에 링크 심어두기,
링크는 서버의 엔드포인트로 authorizationCode를 검사후 accessToken을 내려주는 컨트롤러와 연결되는 링크이다.
링크에 authorizationCode 쿼리로 심어두기

꺼내서 토큰정상인지 확인

디코드가 안돼면 invalid token
토큰이 만료되었는지도 확인했고

약간 재밌는거라면

Date.now() 는 number이고

new Date(Date.now()) 이렇게하면 데이트 타입이다.

조금 신기했고, 데이트타입끼리 <, > 부등호 사용이가능해서 토큰의 exp와 현재 서버로 요청들어온 그시점의 now를 비교했다.

현재는 토큰이 만료안됐다면

db조회해서 findOrCreate 하려고했는데..
잘몰라서 그런건가? 오류가 많이나길래

findOne , create 두번에 나눠서 해보려는데

create부분에서 자꾸 터진다.

그래서 일단 오늘밤 임시 deploy를 진행할 예정이라.

잠깐 접어두고 dev 브런치에 merge해놔야겠다.

https 구현이 진짜 힘들꺼같다.

틈틈히 노드밸런서를좀 읽어둬야겠다.

생활코딩에서 외부 CA 1년무료인곳에서 인증서 받아서 서버에 올리는방법강의로 봐서 그것도 있긴한거같은데

최대한 노드밸런서 or nginx, 직접적인 구현에 초점을 맞춰서 해보고, 안되면 생활코딩처럼 해야겠다 ..

정 찝찝하면, 돈모아서 구매하자고 권유해봐야겠다. ㅋㅋㅋㅋ

profile
front-back / end developer / Let's be an adaptable person

0개의 댓글