nodejs에서 google OTP 사용하기

정태민·2023년 5월 9일
0

일단 공식 문서에서 제공해주는 소스 기반으로 작성

const { authenticator } = require('otplib');
const QRCODE = require('qrcode');
// otp 인증 페이지로 이동
function getOTPQRimg(Context,response){

beautyPrint('getOTPQRimg----------------------',Context);
// generate QR code
const generateQRCodePromise = (secret) => {
	let url = authenticator.keyuri('email@gmail.com','testotp',secret)
	return new Promise((resolve, reject) => {
		QRCODE.toDataURL(url, (err, imageUrl) => {
			if (err) {
				reject(err);
			} else {
				resolve(imageUrl);
			}
		});
	});
};
const secret = authenticator.generateSecret();

//const otpauthUrl = authenticator.keyuri('user@example.com', 'My Service', secret);
OTPsecretMap[Context.USERID]=secret;
(async function(){
try {

		let qurimg = await generateQRCodePromise(secret);
		
		response.end(qurimg);
		
		
	} catch (err) {
		console.error(err);
		response.end(err);
	}
})();

}

function checkOTPval(Context,response){
var pass = Context.pass;
var userid = Context.USERID;
console.log('checkOTPval',pass,OTPsecretMap,(OTPsecretMap[userid]))
secret=OTPsecretMap[userid];
if(!OTPsecretMap[userid]){
response.end('noid');

}
else {
	console.log('checkOTPval2')
	let verified = authenticator.verify({ token: pass,secret});
	console.log('checkOTPval',verified)
	response.end(JSON.stringify(verified));

}

}

profile
퇴근후 30분 출근전 30분

0개의 댓글