📌 인증 vs 인가
인증
인가
클라이언트가 서버에 아이디/비밀번호 보내면 서버에서 반응을 함.
한 번 인증을 했다고 하면, 아이디와 비밀번호를 매번 보내야하는지에 대한 의문이 발생하는데
이때 사용하는것이 JWT(이후 강의에서 설명)

서버에서 JWT 만들어서 보내줌(JWT는 Access Token이라고 생각하면 된다!)
이후 client가 Access Token 사용해서 통신하게 됨.
인증 단계
인가 단계
세 가지 모두 인증, 인가에 사용되는 도구.
다른 컴퓨터로 로그인하거나 다른 브라우저로 로그인한다거나 했을 때 공유되지 않는다는 문제점
➡️ Cookie + Session

💡 Cookie + Session
클라이언트는 전달받은 Session ID를 쿠키에 저장하고 다음부터는 쿠키를 서버에게 전달할 수 있게 됨

BUT

클라이언트가 아이디/비밀번호 보내면 서버에서 검증 후 유저의 정보가 담긴 JWT를 전달해줌
보안을 위해 같은 정보로 두 개의 토큰 만듦
Access Token은 만료 기한 짧게, Refresh Token은 일주일 정도의 기간으로

비밀번호 서버에 보내면 서버에서는 비밀번호를 가공(암호화)해서 저장함.
이럴 때 쓰는 암호화 방식은 크게 두 가지, 양방향 암호화와 단방향 암호화
양방향 암호화

단방향 암호화

Bcrypt
$yarn add bcrypt
import bcrypt from 'bcrypt';
dotenv.config(); // 환경 변수를 process.env로 접근할 수 있게 함
const hashedPassword = await bcrypt.hash(password, process.env.PASSWORD_SALT);
const user = await Prisma.user.findUnique({
where: {
email,
}
});
const isCorrect = await bcrypt.compare(password, user.password);
🚨 Prisma 듣고 다시.. (2/18)