摘要身份验证请求错误(用户:false)

触觉

我正在尝试使用Passport在我的应用程序中实现摘要身份验证,但遇到了以下问题,无法解决。

当我按如下方式卷曲“受保护的网址”时,收到400-错误的请求响应:

    $curl --user test:123456 --digest http://localhost:3000/users

您可以在末尾找到完整的卷曲请求/响应。

我尝试使用自定义回调,passport.authenticate以查看得到了什么:

users.get('/', function(req, res, next) {
  passport.authenticate('digest', {session: false}, function(err, user, info) {
  console.log('Err: %s', err);
  console.log('User: %s', user);
  console.log('Info: %s', info);
})(req, res, next);
}, otherMiddleware);

结果是:

Err: null
User: false
Info: Digest realm="Users", nonce="YTFqg2z17mYU039DvuLzONN48F0q1Xmk", qop="auth"

因此,我认为未正确发送用户,但无法弄清楚原因。

我已将护照配置为使用摘要身份验证,如下所示:

  • 我试图将所有设置都保留为默认选项,所以现时和领域参数由护照设置
  • 样本支出在不同的时间进行,这就是为什么现时值不相同的原因。
  • 如果我将策略更改为“基本”,它就可以工作。

index.js:

// ...
var passport = require('passport);
var usersRoute = require('./routes/users');

// ...

app.use(passport.initialize());
app.use('/users', usersRoute);

users.js

var passport = require('passport'),
  DigestStrategy = require('passport-http').DigestStrategy,
  User = require('../../models/users');


passport.use(new DigestStrategy({qop: 'auth'},function(username, done) {
  User.findOne({username: username}, function (err, user) {
    if (err) {return done(err);}
    if (!user) {return done(null, false);}
    return done(null, user, user.password);
  });
}));

users.get('/', passport.authenticate('digest', {session: false}), function(req, res) {
  res.send('Hi!');
});

然后,当我尝试:

$curl --user test:123456 --digest http://localhost:3000/users

我收到“ 400-错误的请求”响应。

我留下了带有-v选项的curl命令的完整输出。

    Eileen :: ~ » curl -v --user test:123456 --digest http://localhost:3000/users
    * Adding handle: conn: 0x7f858b803a00
    * Adding handle: send: 0
    * Adding handle: recv: 0
    * Curl_addHandleToPipeline: length: 1
    * - Conn 0 (0x7f858b803a00) send_pipe: 1, recv_pipe: 0
    * About to connect() to localhost port 3000 (#0)
    *   Trying ::1...
    *   Trying 127.0.0.1...
    * Connected to localhost (127.0.0.1) port 3000 (#0)
    * Server auth using Digest with user 'test'
    > GET /users HTTP/1.1
    > User-Agent: curl/7.30.0
    > Host: localhost:3000
    > Accept: */*
    >
    < HTTP/1.1 401 Unauthorized
    < X-Powered-By: Express
    < WWW-Authenticate: Digest realm="Users", nonce="Ah0vZigHMrDx6SMcA3cMeaFm46RtYmv9", qop="auth"
    < Date: Wed, 18 Jun 2014 11:13:58 GMT
    < Connection: keep-alive
    < Transfer-Encoding: chunked
    <
    * Ignoring the response-body
    * Connection #0 to host localhost left intact
    * Issue another request to this URL: 'http://localhost:3000/users'
    * Found bundle for host localhost: 0x7f858b4151c0
    * Re-using existing connection! (#0) with host localhost
    * Connected to localhost (127.0.0.1) port 3000 (#0)
    * Adding handle: conn: 0x7f858b803a00
    * Adding handle: send: 0
    * Adding handle: recv: 0
    * Curl_addHandleToPipeline: length: 1
    * - Conn 0 (0x7f858b803a00) send_pipe: 1, recv_pipe: 0
    * Server auth using Digest with user 'test'
    > GET /users HTTP/1.1
    > Authorization: Digest username="test", realm="Users", nonce="Ah0vZigHMrDx6SMcA3cMeaFm46RtYmv9", uri="/users", cnonce="ICAgICAgICAgICAgICAgICAgICAgIDE0MDMyNjc5MTY=", nc=00000001, qop=auth, response="7c7d3c5bb1b8882915d3ffe1a2b0231c"
    > User-Agent: curl/7.30.0
    > Host: localhost:3000
    > Accept: */*
    >
    < HTTP/1.1 400 Bad Request
    < X-Powered-By: Express
    < Date: Wed, 18 Jun 2014 11:13:58 GMT
    < Connection: keep-alive
    < Transfer-Encoding: chunked
    <
    * Connection #0 to host localhost left intact
    Bad Request%
不育

我遇到了类似的问题,并且在我们两个案例中都认为问题在于,passport-http不适用于已挂载的应用程序。

有一个开放的拉取请求https://github.com/jaredhanson/passport-http/pull/16,如果可以通过CI构建,则可以修复该错误。

一种解决方法是仅删除Express路由器实例,并传递应用程序实例以将所有端点直接安装在应用程序对象上。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用户身份验证错误

来自分类Dev

尝试从ruby使用摘要身份验证呼叫服务的错误请求

来自分类Dev

SIP INVITE的星号摘要身份验证给出了“用户不匹配”错误

来自分类Dev

SIP INVITE的星号摘要身份验证给出了“用户不匹配”错误

来自分类Dev

如何使用curl发送摘要身份验证请求?

来自分类Dev

如何使用curl发送摘要身份验证请求?

来自分类Dev

摘要身份验证请求中的 HTTP 无授权字段

来自分类Dev

角度摘要身份验证

来自分类Dev

角度摘要身份验证

来自分类Dev

Linkedin身份验证请求错误

来自分类Dev

PostgreSQL用户的身份验证错误?

来自分类Dev

Liferay Ldap用户身份验证错误

来自分类Dev

PostgreSQL用户的身份验证错误?

来自分类Dev

我对用户进行身份验证时始终返回false

来自分类Dev

OpenConnect:执行身份验证请求时传递用户密码?

来自分类Dev

.Net Core HttpClient摘要身份验证

来自分类Dev

Firebase-身份验证自定义令牌错误身份验证/网络请求失败

来自分类Dev

带摘要HTTP身份验证的POST请求:“无法重试流式HTTP正文”

来自分类Dev

如何通过Java(或C#)中的摘要身份验证HTTP通过HTTP发送SOAP请求?

来自分类Dev

如何在角度离子中使用摘要式身份验证发送请求

来自分类Dev

使用基本身份验证与摘要式身份验证与Windows身份验证的原因

来自分类Dev

使用Curl Php SSL身份验证的400错误请求

来自分类Dev

POST 400错误请求React身份验证

来自分类Dev

在使用摘要身份验证(Perl)的服务器上获取用户名

来自分类Dev

选项请求身份验证

来自分类Dev

FTP用户身份验证错误:530和文件格式

来自分类Dev

Azure AD 身份验证错误:用户取消了流程

来自分类Dev

AH01757“生成摘要身份验证的机密...”报告的错误是什么?

来自分类Dev

在不发出身份验证请求的情况下手动强制用户身份验证

Related 相关文章

  1. 1

    用户身份验证错误

  2. 2

    尝试从ruby使用摘要身份验证呼叫服务的错误请求

  3. 3

    SIP INVITE的星号摘要身份验证给出了“用户不匹配”错误

  4. 4

    SIP INVITE的星号摘要身份验证给出了“用户不匹配”错误

  5. 5

    如何使用curl发送摘要身份验证请求?

  6. 6

    如何使用curl发送摘要身份验证请求?

  7. 7

    摘要身份验证请求中的 HTTP 无授权字段

  8. 8

    角度摘要身份验证

  9. 9

    角度摘要身份验证

  10. 10

    Linkedin身份验证请求错误

  11. 11

    PostgreSQL用户的身份验证错误?

  12. 12

    Liferay Ldap用户身份验证错误

  13. 13

    PostgreSQL用户的身份验证错误?

  14. 14

    我对用户进行身份验证时始终返回false

  15. 15

    OpenConnect:执行身份验证请求时传递用户密码?

  16. 16

    .Net Core HttpClient摘要身份验证

  17. 17

    Firebase-身份验证自定义令牌错误身份验证/网络请求失败

  18. 18

    带摘要HTTP身份验证的POST请求:“无法重试流式HTTP正文”

  19. 19

    如何通过Java(或C#)中的摘要身份验证HTTP通过HTTP发送SOAP请求?

  20. 20

    如何在角度离子中使用摘要式身份验证发送请求

  21. 21

    使用基本身份验证与摘要式身份验证与Windows身份验证的原因

  22. 22

    使用Curl Php SSL身份验证的400错误请求

  23. 23

    POST 400错误请求React身份验证

  24. 24

    在使用摘要身份验证(Perl)的服务器上获取用户名

  25. 25

    选项请求身份验证

  26. 26

    FTP用户身份验证错误:530和文件格式

  27. 27

    Azure AD 身份验证错误:用户取消了流程

  28. 28

    AH01757“生成摘要身份验证的机密...”报告的错误是什么?

  29. 29

    在不发出身份验证请求的情况下手动强制用户身份验证

热门标签

归档