如何使用 passport-2fa-totp 验证 google 验证码?
How to verify google authenticator code using passport-2fa-totp?
我正在使用 passportjs 模块实施双因素身份验证 [passport-2fa-totp][1]http://www.passportjs.org/packages/passport-2fa-totp/
我能够成功注册用户并存储其密钥。
我无法验证由 google 验证器应用程序生成的 totp 代码我正在使用以下代码作为参考,
`passport.use(new TwoFAStartegy(函数(用户名,密码,完成){
// 1st step verification: username and password
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false); }
if (!user.verifyPassword(password)) { return done(null, false); }
return done(null, user);
});}, function (user, done) {
// 2nd step verification: TOTP code from Google Authenticator
if (!user.secret) {
done(new Error("Google Authenticator is not setup yet."));
} else {
// Google Authenticator uses 30 seconds key period
// https://github.com/google/google-authenticator/wiki/Key-Uri-Format
var secret = GoogleAuthenticator.decodeSecret(user.secret);
done(null, secret, 30);
}}));`
我无法理解第二步验证。首先,我无权访问此处需要验证的 code
字段,而且我也无法获取任何正确的输出。它只是返回我 Invalid username or password
但事实并非如此。
帮帮我!
请检查您是否仅在这些确切字段中获得 username
、password
和 code
,而不是在任何其他字段中,因为 passport-2fa-totp
假定您是仅进入这些领域。
code
字段将传递给 TwoFAStartegy
的第二个回调,verify
fn 将验证代码。
也许,如果你这样做,你可以获得额外的信息,
new TwoFAStartegy({ passReqToCallback: true }, (username, password, done) =>
{
// First Callback
}, (req, user, verify) => {
console.log(req) // The request Object
// Use req here
})
如果有帮助请告诉我:)
我正在使用 passportjs 模块实施双因素身份验证 [passport-2fa-totp][1]http://www.passportjs.org/packages/passport-2fa-totp/
我能够成功注册用户并存储其密钥。
我无法验证由 google 验证器应用程序生成的 totp 代码我正在使用以下代码作为参考,
`passport.use(new TwoFAStartegy(函数(用户名,密码,完成){
// 1st step verification: username and password
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false); }
if (!user.verifyPassword(password)) { return done(null, false); }
return done(null, user);
});}, function (user, done) {
// 2nd step verification: TOTP code from Google Authenticator
if (!user.secret) {
done(new Error("Google Authenticator is not setup yet."));
} else {
// Google Authenticator uses 30 seconds key period
// https://github.com/google/google-authenticator/wiki/Key-Uri-Format
var secret = GoogleAuthenticator.decodeSecret(user.secret);
done(null, secret, 30);
}}));`
我无法理解第二步验证。首先,我无权访问此处需要验证的 code
字段,而且我也无法获取任何正确的输出。它只是返回我 Invalid username or password
但事实并非如此。
帮帮我!
请检查您是否仅在这些确切字段中获得 username
、password
和 code
,而不是在任何其他字段中,因为 passport-2fa-totp
假定您是仅进入这些领域。
code
字段将传递给 TwoFAStartegy
的第二个回调,verify
fn 将验证代码。
也许,如果你这样做,你可以获得额外的信息,
new TwoFAStartegy({ passReqToCallback: true }, (username, password, done) =>
{
// First Callback
}, (req, user, verify) => {
console.log(req) // The request Object
// Use req here
})
如果有帮助请告诉我:)