[Node.js] 로그인, 인증 기능 with Passport (2)

Hyun·2023년 8월 14일
0

nodejs

목록 보기
9/19

1. 인증을 위한 미들웨어 생성

웹 페이지를 사용하다보면 로그인 한 경우에만 들어갈 수 있는 경우, 그냥 전부 들어 갈 수 있는 경우 여러 가지 상황이 있는데, passport에서는 이런한 기능을 유용하게 사용할 수 있는 미들웨어를 제공한다!

1-1) 미들웨어 생성하기

  • req.isAuthenticated()
    1) checkAuthenticated : 로그인을 해야만 접근 할 수 있는 페이지에 만약에 로그인을 하였으면 바로 next, 안되면 login하라고 login 페이지로 이동
    2) checkNotAuthenticated : 로그인을 안 해야만 접근 할 수 있는 페이지에 만약에 로그인을 하였으면 바로 /로 이동, 안되면 해당 페이지 접근

1-2) 사용법

  • 그냥 미들웨어로 넣어주면 된다.

2. 로그아웃

2-1) 로그아웃 기능

공식 문서를 보면 요청은 post나 delete로 하는 것을 권장한다.

2-2) 로그아웃 폼

3. 비밀번호 저장

현재 코드는 평문 암호가 그대로 DB에 저장되기 때문에 해킹을 당하게 되면 그대로 털리게 된다. 이를 방지하기 위해 암호화하여 저장을 해보자

3-1) 필요 모듈

  • bycrptjs

3-2) 암호화

비밀번호를 암호화 키와 함께 암호화(양방향)

  • 어떠한 암호를 이용해서 비밀번호를 암호화 하고 그 암호를 이용하여 복호화도 가능
  • 암호화 키가 노출되면 알고리즘은 대부분 오픈되어 있어 위험도가 높다!

SHA-256으로 해시화하여 저장(단방향)

  • 무작위 대입하여 레인보우 테이블을 생성하여 암호화된 비밀번호를 비교해서 비밀번호를 알아낼 수 있다.
  • 대부분 비슷한 암호를 사용하기 때문에 레인보우 테이블로 알 수 있기 때문에, '솔트'라는 것을 사용한다. => Hash(Salt + Password) 암호화해서 저장

3-3) 암호화 코드

3-4) 비교코드

0개의 댓글