OTP ์ธ์ฆ ๐Ÿ” โ–ป otplib

March 05, 2021

logo

OTP ์ƒ์„ฑ ๋ฐ ํ™•์ธ์„ ์œ„ํ•œ JavaScript OTP (One Time Password) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๐Ÿ’Ž ๋ชฉ์ฐจ

์ค€๋น„๋ฅผ ํ•˜๋ฉฐ

๋ณด์•ˆ์ ์ธ ์ด์Šˆ๊ฐ€ ๋‚˜๋‚ ์ด ๊ธ‰์ฆํ•˜๋ฉด์„œ, 2-Factor ์ธ์ฆ์„ ๋„์ž…ํ•˜๋Š” ์ถ”์„ธ๊ฐ€ ๋Š˜๊ณ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ OTP ์ธ์ฆ์„ ํ†ตํ•œ ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ์„ ์ง„ํ–‰ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•˜๋‹จ ๋งํฌ๋ฅผ ํ†ตํ•ด์„œ ์ž์‹ ์˜ ๊ธฐ์ข…์— ๋งž๋Š” OTP ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค์น˜ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.


โฌ† ๋ชฉ์ฐจ


โš™๏ธ ์„ค์น˜๋ฅผ ํ•˜๋ฉฐ

$ npm install base64-img, otplib, qrcode

โฌ† ๋ชฉ์ฐจ


๐Ÿ˜ณ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉฐ

โ–ผ OTP ์ƒ์„ฑ

otplib

@createdOTP

  • OTP SecretKey๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

    • generateSecret: Secret Key ์ƒ์„ฑ
    • keyuri: ๋น„๋ฐ€ ํ‚ค๋Š” ๋‹ค์Œ ํ˜•์‹์˜ URI๋กœ QR ์ฝ”๋“œ๋กœ ์ธ์ฝ”๋”ฉ

@verifyOTP

  • ์ž…๋ ฅํ•œ OTP ๊ฐ’์„ ๊ฒ€์ฆํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

    • verify: OTP ๊ฐ’๊ณผ ์ƒ์„ฑํ–ˆ๋˜ SecretKey๋ฅผ ํ†ตํ•ด ๊ฒ€์ฆ

โ–ผ OTP ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  QR Code ์ƒ์„ฑ

qrcode

@createQRCode

  • QR Code๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

    • toDataURL: OtpURI๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ qrcode๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ base64Img๋ฅผ ํ†ตํ•ด pngํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ

โ–ผ DATABASE TABLE

users db

otp db

โ–ผ QR Code ์ƒ์„ฑ

result1

โ–ผ QR Code Scan

result2

โ–ผ ๋กœ๊ทธ์ธ

result3


โฌ† ๋ชฉ์ฐจ


๐Ÿค” ์ƒ๊ฐํ•ด ๋ณด๋ฉฐ

ํšŒ์›๊ฐ€์ž…์„ ํ†ตํ•ด OTP QR Code๋ฅผ ์‚ฌ์šฉ์ž ๋ฉ”์ผ๋กœ ์ „์†ก

$ npm install nodemailer

โ–ผ QR Code๋ฅผ ์‚ฌ์šฉ์ž ๋ฉ”์ผ๋กœ ์ „์†ก

mailer

@createTransport

  • mailer SMTP ์„ค์ •

    • service - SMTP ๊ธฐ๋ฐ˜ ์ „์†ก ์ง€์›
    • auth - user: ๋ฉ”์ผ ๊ณ„์ •, pass: ๊ณ„์ • ๋น„๋ฐ€๋ฒˆํ˜ธ

@sendMail

  • ๋ฉ”์ผ ์ „์†ก

    • from(๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ) - name: ๋ณด๋‚ด๋Š” ์ด, address: ๋ณด๋‚ด๋Š” ๋ฉ”์ผ
    • to(๋ฐ›๋Š” ์‚ฌ๋žŒ) - address: ๋ฐ›๋Š” ๋ฉ”์ผ
    • subject(์ œ๋ชฉ)
    • text(๋‚ด์šฉ)

๊ฒฐ๊ณผ

โ–ผ ์‚ฌ์šฉ์ž ๋ฉ”์ผ ์ˆ˜์‹ 

result2


โฌ† ๋ชฉ์ฐจ



์ถœ์ฒ˜

GitHub > otplib

์—ฌ๋Ÿฌ๋ถ„์˜ ๋Œ“๊ธ€์ด ํฐํž˜์ด ๋ฉ๋‹ˆ๋‹ค. (เน‘โ€ขฬ€ใ…‚โ€ขฬ)ูˆโœง


Written by@[AGUMON]
์•„๊ตฌ๋ชฌ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ

GitHubFacebook