엘리스 SW 엔지니어 트랙 33일차
박성국님 실시간 강의날 🦁
오늘의 내용은 Database와 인증
마음 편히 이런게 있구나 쳐다보자
데이터베이스를 만질 때
SQL 로우쿼리로 하는 것 보다
Sequelize를 배워서 사용하면 좋다고 하신다
Node 인증 구현
GraphQL (GQL)
SQL이 아닌 객체를 보내주는 것
메타(페이스북)가 개발한 새로운 API 규격
SQL이 백엔드를 위함이라면,
GQL은 보다 더 클라이언트 친화적 시스템
Query
데이터 요청에 사용
REST에서 GET같은 녀석
Mutation
데이터 수정
REST의 POST, DELETE, UPDATE 같은 녀석
SDL(Schema Definition Language)
스키마 정확히 정해줘야된다
명확한 타입을 정의해서 기술
GraphQL 공식
링크 => https://graphql.org/
Apollo 서버를 만들어 줘야된다
링크 => https://www.apollographql.com/docs/apollo-server/getting-started/
OAuth
접근 권한 위임(delegation) 위한 공개 표준
구글 로그인, 깃헙 로그인, 트위터 로그인 등 이런건가보다
OAuth 장점
원 클릭 로그인 => 진입장벽이 매우 낮아짐
유저가 비밀번호 기억할 필요 없다
유저 허용 여부에 따라 이메일, 프로필 사진 등 기본 정보 얻을 수 있다
JWT와 쿠키
중요하다고 한다
소셜 OAuth 설정
PassPort 이용 구현
오후 실시간 강의날 🦁
서버는 보통 최소한 2대 이상
요청을 하나로 날아오지
그래서 이 요청을 분배해주는 Load Balancer(LB)가 있다
이 LB로 로그인 요청이 날아왔다
첫 번째 서버에서 ID/PW 검증하고 사용자에게 쿠키를 돌려준다
근데 다음 요청일 때 두 번째 서버로 보내버렸다
그러면 로그인 안됐다고 뜨는것
(쿠키는 로그인 완료한 사용자에게 보내주는 것)
이걸 해결하기위해
세션 Data를 DB에 저장,
그리고 쿠키를 넘겨준다
두 번째 요청일 때
DB에 가서 세션 Data를 보고 로그인 확인을 해준다
JWT로 이 DB단을 없애줄 수 있다
JWT(Json Web Token)
위조 어려운 토큰이다 But 탈취 당하면 큰일
신분증이라 생각하면된다
탈취를 막고자 만료시간이 있다
(짧게는 5~30분 | 길게는 1주일)
첫 번째 서버 컴퓨터에서 JWT 발급
이 JWT를 가지고 다른 서버 컴퓨터로 간다
다른 서버에서는 이 JWT가 위조가 되었는지 확인
이래서 DB단이 사라지는 것
Passport
serializeUser()
deserializeUser()
passport.quthenticate()
로그인 시도
id/pw => passport.quthenticate() => local => serializeUser() => id 세션에 저장
id/pw가 맞는지
user id만 세션에 저장
요청이 들어올 때마다
요청 => passport의 session 미들웨어 => deserializeUser() 호출: user id를 user data로 변경
passport에 관한 egoing님 강의
링크 => https://opentutorials.org/course/3402
백엔드 들어와서는 이해 안가는 날들이 많아졌다
오늘도..
'Web Dev > ELICE' 카테고리의 다른 글
35 (1/2) :: JWT, Cookie, 비밀번호 찾기 흐름, OAuth, 구글로그인, Nginx (0) | 2021.12.11 |
---|---|
34 :: 회원가입, Passport.js, Session Store, CSR 댓글 기능, MongoDB Aggregation (0) | 2021.12.10 |
31 :: 데이터베이스, SQL, NoSQL, express, Mongoose 실습 (0) | 2021.12.07 |
30 :: MongoDB, No SQL, Mongoose, Express + MongoDB (0) | 2021.12.04 |
29 :: 미들웨어, MVC, REST API, Postman (0) | 2021.12.03 |