Nodejs使用https进行基本身份验证

时间:2018-03-08 08:40:07

标签: node.js https basic-authentication

我有一个运行的nodjs app,它使用基本身份验证和htpasswd生成的文件中的密码详细信息。这很好。

我想做的是通过https运行它。我可以使用https正常工作,但似乎无法解决如何让两者协同工作,https + basic auth。

这是用于浏览器进入服务器并在URL中发送变量。我找到了一些解决方案,但很多人似乎都专注于服务器使用基本身份验证对其他人进行出站呼叫。

这是基本的认证。

    // Authentication module.
const auth = require('http-auth');
const basic = auth.basic({
    realm: "REALM.",
    file: __dirname + "/users.htpasswd"
});
const http = require('http');

const fs = require('fs');


var url = require('url');

const hostname = '0.0.0.0';
const port = 80;

const server = http.createServer(basic, (req, res) => {
  var url_parts = url.parse(req.url, true);
  var key = url_parts.query["name"];
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');

  fs.readFile(__dirname + '/basic.json', function (err, data) {
    if (err) {
      throw err;
    }

    table = JSON.parse(data.toString());

    var value = table[key];
    res.end(JSON.stringify({"group" : value}));
  });
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

这是没有基本身份验证的https位。

const https = require('https');
const fs = require('fs');

var url = require('url');

const hostname = '0.0.0.0';
const port = 443;

const options = {
  key: fs.readFileSync('star.pkey'),
  cert: fs.readFileSync('star.pem'),
};

const server = https.createServer(options, (req, res) => {
  var url_parts = url.parse(req.url, true);
  var key = url_parts.query["name"];
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');

  fs.readFile(__dirname + '/basic.json', function (err, data) {
    if (err) {
      throw err;
    }

    table = JSON.parse(data.toString());

    var value = table[key];
    res.end(JSON.stringify({"group" : value}));
  });
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

任何帮助表示感谢。

0 个答案:

没有答案