Passport - Duo策略“ERR |传递给sign_request()的用户名无效”

时间:2016-07-19 15:07:49

标签: javascript node.js authentication passport.js

我目前正在玩node.js中的duo使用护照来查看我是否可以将它实现到测试应用程序中....我正在使用passport-duo strat来执行此操作并且GitHub repo for that here我试图使用给出的示例,但无法在我自己的应用程序中使用它。

但似乎每次我为二人组加载iframe时都会给我留下同样的错误GO.db

它不断下降的片段如下:

SELECT * FROM TableName
WHERE Field = @ParameterName

HTML

ERR|The username passed to sign_request() is invalid.

想知道任何有实施护照二人的经验的人,并且知道为什么app.get('/login-duo', checkLoggedIn, function (req, res, next) { console.log(req.user); console.log(req.user['id']); console.log(req.query.host); console.log(req.query.post_action); console.log(req.query.signed_request); var username= req.user['id']; res.render('login-duo', { user : req.user['id'], host : req.query.host, post_action : req.query.post_action, sig_request : req.query.signed_request }); }); 会抛出这个错误。

1 个答案:

答案 0 :(得分:2)

您提到的Passport-Duo package declares duo_web作为依赖项。

duo_nodejs (duo_web)是返回此错误的包。错误在duo.js file

中声明

如果我们查看使用此错误的the source code,则唯一的出现是:

exports.sign_request = function (ikey, skey, akey, username) {
  if (!username || username.length < 1) {
    return ERR_USER;
  }
  if (username.indexOf('|') !== -1) {
    return ERR_USER;
  }

  // ...
  // Truncated for the example...
  // ...
}

代码仅在3种情况下返回此错误:

  • 未定义用户名
  • 用户名为空
  • 用户名包含字符|

返回Passport-Duostrategy使用以下代码调用此函数sign_request

var signed = duo.sign_request(this._ikey, this._skey, this._akey, req.user.email);

您的req.user.email似乎与先前返回此错误的条件相匹配。使用问题中提供的代码,无法检查它是哪一个,但您应该检查此变量并确保这些条件均不正确。