Day21 (4.11)

ShinJuYong·2022년 4월 12일
0

camp

목록 보기
21/44
post-thumbnail

암호화

단방향 암호화(Hash) <-> 양방향암호화

단방향

평문을 암호화는 가능하지만 암호화된것은 평문화가 불가능

양방향

암호화된 평문을 다시 복호화가 가능

JWT / Passport

패키지 설치
yarn add @nestjs/jwt passport-jwt
yarn add @types/passport-jwt --dev

프론트에선 api가 Header에 담은 JWT정보를 꺼내와 사용한다

Guard

api를 아무나 실행못하게 막아주는 방어막같은것

@nestjs/passport를 사용해서
@UseGuards(AuthGuard)와같이 데코레이터로 사용한다.

/commons/auth/jwt-access.strategy.ts

import { PassportStrategy } from '@nestjs/passport';
import { ExtractJwt, Strategy } from 'passport-jwt';

export class JWtAccessStrategy extends PassportStrategy(Strategy, 'aaa') {
  constructor() {
    super({
      jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
      secretOrKey: 'myAccessKey',
    }); // 검증부
  }

  // 검증이 완료되면 해당부분이 실행된다.
  validate(payload) {
    console.log(payload);
  }
}

PassportStrategy(Strategy, Name) : 어떤 인가를 쓸건지와 어떤이름으로 사용할건지를 정한다.
super({...}) : 패스포트의 가드를 설정해준다 어떤 리퀘스트를받는지, 비밀키가 무엇인지
validate : 위의 검증부가 끝나면 해당 검증완료부분의 함수가 실행된다.

GraphQL Guard

그래프큐엘같은경우에는 REST API와는 다르게 Guard를 따로 설정해줘야한다.

순서
1. user.resolver.ts에서 데코레이터로 설정해둔 api호출
2. gql-auth.guard.ts가 실행
3. jwt-access.strategy.ts에서 검증후 validate가 실행된다.

TIL Git

강의-깃허브
숙제-깃허브

0개의 댓글