0

Trying to implement Digest auth in nodejs. Below is the code

var http = require('http');
var auth = require('http-auth');
var express = require('express');
var app = express();
var user;

var basic = auth.basic({
    realm: 'Sample',
    file: __dirname + "/users.htpasswd",
    algorithm:'md5'
});

basic.on('success', (result, req) => {
    console.log(`User authenticated: ${result.user}`);
    user = result.user;
});

basic.on('fail', (result, req) => {
    console.log(`User authentication failed: ${result.user}`);
    console.log(req.headers.authorization);
});

basic.on('error', (error, req) => {
    console.log(`Authentication error: ${error.code + " - " + error.message}`);
});

http.createServer(app).listen(8000);

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

app.get('/', function(req, res) {
    console.log(req.headers);
    console.log(basic);
    res.json('Hello from '+ user);
    res.end();
});

app.post('/', function(req, res) {
    console.log(req.headers);
    console.log(basic);
    res.json('Hello from '+ user);
    res.end();
});

This is the content of users.htpasswd file:- ankit:Sample:e4b2d19b03346a1c45ce86ad41b85c5e

Using postman to call the end point with username ankit, pwd ankit & realm Sample, everytime I am getting 401.

Please let me know where I am doing wrong.

Thanks

1 Answers1

1

You're mixing basic auth and digest auth. Replace auth.basic with auth.digest and your code should work as-is.

Eric B
  • 691
  • 5
  • 11