【问题标题】:http-auth digest using express js使用 express js 的 http-auth 摘要
【发布时间】:2017-08-11 15:01:52
【问题描述】:

我正在用 Express JS 开发一个 API。我想使用http-auth library,并且一直在尝试使用摘要式身份验证,但一直无法使用。这是我的代码:

var app        = require('express')(),
    routes     = require('./routes'),
    bodyParser = require('body-parser'),
    auth       = require('http-auth'); 

app.use(bodyParser.json()); // Soporta json encoded bodies
app.use(bodyParser.urlencoded({ // Soporta encoded bodies
    extended: true
}));

var digest = auth.digest({
    realm: 'prueba',
    file: __dirname + "/usr.pass"
});

app.use(auth.connect(digest));

// Conectamos todas nuestras rutas
app.use('/', routes);

// Levantamos servidor
app.listen(9999, () => {
    Console.log('running');
});

我的usr.pass 文件有这一行:jdurini:prueba:88bfcf02e7f554f9e9ea350b699bc6a7(密码是 MD5 表示,“2315”)。

我正在使用 POSTMAN 来调用我的端点。在这种情况下,我在 localhost:9999 上尝试 POST 方法,每次尝试时,它都会触发 digest.on('fail') 事件。

授权标签中,我use this data

我做错了什么?这是我第一次使用 Express,所以任何评论都会有所帮助。

编辑 1 - 8 月 14 日

邮递员中的授权标头如下:Digest username="jdurini", realm="prueba", nonce="", uri="/", response="2c01bce3e1980c575fc82e32f9943617", opaque=""。当我填写授权表格时,此标头会自动生成:

  • 类型:摘要验证
  • 用户名:jdurini
  • 领域:prueba
  • 密码:2315

请求中没有使用其他标头。

【问题讨论】:

    标签: node.js express http-auth


    【解决方案1】:

    原因

    您的身份验证文件似乎有问题。

    解决方案

    我刚刚使用htdigest 重新生成了身份验证行:

    htdigest usr.pass prueba jdurini
    

    得到了这样的东西:

    jdurini:prueba:546bb2109e9d875fb486bf90a55fdbd6
    

    新版本适合我。

    通知

    我猜您可能想将Console.log('running') 行更改为小写,因为您的版本无法为我编译。

    【讨论】:

    • 感谢您的遮阳篷。我使用 htdigest 生成我的密码文件。但它一直在 Postman 中返回“401 Unauthorized”
    • 请给我更多关于请求的信息,请回复标题。
    • 对于差异尝试使用简单的浏览器来验证这是否与 Postman 配置有关。
    • 它在 Chrome 中工作!谢谢@gevorg。你认为邮递员的问题是什么?
    • 问题是邮递员会忽略服务器发送的随机数,并对你提供的随机数进行硬编码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 2012-07-09
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多