1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-04 18:29:17 +02:00

Add optional basic authentication in auth-mock

This commit is contained in:
Vishal Banthia 2016-01-16 12:52:16 +09:00
parent 470e1d6a9d
commit e3fce92704
3 changed files with 44 additions and 0 deletions

View file

@ -557,6 +557,16 @@ program
.option('-a, --app-url <url>' .option('-a, --app-url <url>'
, 'URL to app' , 'URL to app'
, String) , String)
.option('--use-basic-auth'
, 'Whether to use basic authentication for login or not')
.option('--basic-auth-username <username>'
, 'Basic Auth Username (or $BASIC_AUTH_USERNAME)'
, String
, process.env.BASIC_AUTH_USERNAME || 'username')
.option('--basic-auth-password <password>'
, 'Basic Auth Password (or $BASIC_AUTH_PASSWORD)'
, String
, process.env.BASIC_AUTH_PASSWORD || 'password')
.action(function(options) { .action(function(options) {
if (!options.secret) { if (!options.secret) {
this.missingArgument('--secret') this.missingArgument('--secret')
@ -570,6 +580,13 @@ program
, secret: options.secret , secret: options.secret
, ssid: options.ssid , ssid: options.ssid
, appUrl: options.appUrl , appUrl: options.appUrl
, mock: {
useBasicAuth: options.useBasicAuth
, basicAuth: {
username: options.basicAuthUsername
, password: options.basicAuthPassword
}
}
}) })
}) })

View file

@ -7,6 +7,7 @@ var bodyParser = require('body-parser')
var serveStatic = require('serve-static') var serveStatic = require('serve-static')
var csrf = require('csurf') var csrf = require('csurf')
var Promise = require('bluebird') var Promise = require('bluebird')
var basicAuth = require('basic-auth')
var logger = require('../../util/logger') var logger = require('../../util/logger')
var requtil = require('../../util/requtil') var requtil = require('../../util/requtil')
@ -28,6 +29,27 @@ module.exports = function(options) {
}) })
}) })
// BasicAuth Middleware
var basicAuthMiddleware = function(req, res, next) {
function unauthorized(res) {
res.set('WWW-Authenticate', 'Basic realm=Authorization Required')
return res.send(401)
}
var user = basicAuth(req)
if (!user || !user.name || !user.pass) {
return unauthorized(res)
}
if (user.name === options.mock.basicAuth.username &&
user.pass === options.mock.basicAuth.password) {
return next()
} else {
return unauthorized(res)
}
}
app.set('view engine', 'jade') app.set('view engine', 'jade')
app.set('views', pathutil.resource('auth/mock/views')) app.set('views', pathutil.resource('auth/mock/views'))
app.set('strict routing', true) app.set('strict routing', true)
@ -49,6 +71,10 @@ module.exports = function(options) {
next() next()
}) })
if (options.mock.useBasicAuth) {
app.use(basicAuthMiddleware)
}
app.get('/', function(req, res) { app.get('/', function(req, res) {
res.redirect('/auth/mock/') res.redirect('/auth/mock/')
}) })

View file

@ -34,6 +34,7 @@
"adbkit-apkreader": "^1.0.0", "adbkit-apkreader": "^1.0.0",
"adbkit-monkey": "^1.0.1", "adbkit-monkey": "^1.0.1",
"aws-sdk": "^2.2.3", "aws-sdk": "^2.2.3",
"basic-auth": "^1.0.3",
"bluebird": "^2.9.34", "bluebird": "^2.9.34",
"body-parser": "^1.13.3", "body-parser": "^1.13.3",
"bufferutil": "^1.2.1", "bufferutil": "^1.2.1",