[javascript] 자바스크립트를 사용한 이중 인증 설정하기
이중 인증은 보안을 강화하기 위해 매우 중요합니다. 이중 인증은 사용자가 로그인 시 비밀번호 외에도 추가적인 인증 요소를 제공해야 합니다.
1. 인증 앱 설정
먼저, Google Authenticator, Authy 또는 다른 인증 앱을 선택하고 설치합니다.
2. QR 코드 생성
사용자가 로그인을 시도할 때마다 QR 코드를 생성합니다. 이를 위해 Node.js 프로젝트에 speakeasy
패키지를 사용하여 QR 코드를 생성하는 코드를 추가합니다.
const speakeasy = require('speakeasy');
const secret = speakeasy.generateSecret({length: 20});
console.log(secret.base32); // 시크릿 키를 기록해두세요
const uri = speakeasy.otpauthURL({
secret: secret.base32,
label: '사용자 이름',
issuer: '회사 이름',
});
console.log(uri); // QR 코드 생성을 위한 URI
3. QR 코드 표시
위의 코드를 사용하여 생성된 URI를 인증 앱에 스캔할 수 있는 QR 코드로 변환하여 사용자에게 표시합니다.
4. 토큰 확인
사용자가 QR 코드를 스캔하여 인증 앱에 등록하고 인증을 시도하면, 서버 측에서 제공된 키를 사용하여 사용자가 제공한 토큰을 확인해야 합니다.
const verified = speakeasy.totp.verify({
secret: '시크릿 키',
encoding: 'base32',
token: '사용자가 입력한 토큰',
window: 0,
});
console.log(verified); // true 또는 false
5. 인증 완료
서버에서 토큰이 유효하다는 확인을 받으면 사용자에게 인증이 완료되었다는 메시지를 표시합니다.
이제 사용자는 로그인 시 이중 인증을 통해 더욱 안전하게 보호됩니다.
참고:
- speakeasy npm 패키지: https://www.npmjs.com/package/speakeasy
- Google Authenticator: https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en&gl=US