-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
51 lines (39 loc) · 1.43 KB
/
app.js
File metadata and controls
51 lines (39 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
const
restify = require('restify')
, restifyPlugins = require ('restify').plugins
, morgan = require ('morgan')
, passport = require('passport')
, BearerStrategy = require('passport-azure-ad').BearerStrategy
, config = require('./config')
, authenticatedUserTokens = []
, serverPort = process.env.PORT || config.serverPort
;
const authenticationStrategy = new BearerStrategy(config.credentials, (token, done) => {
let currentUser = null;
let userToken = authenticatedUserTokens.find((user) => {
currentUser = user;
user.sub === token.sub;
});
if(!userToken) {
authenticatedUserTokens.push(token);
}
return done(null, currentUser, token);
});
passport.use(authenticationStrategy);
const server = restify.createServer({ name: 'Azure Active Directory with Node.js Demo' });
server.use(morgan('dev'));
server.use(restifyPlugins.authorizationParser());
server.use(passport.initialize());
server.use(passport.session());
// Routes
server.get('/', (req, res, next) => {
res.send(200, 'Home da api, visível publicamente. Tente chamar o endpoint /api.');
next();
});
server.get('/api', passport.authenticate('oauth-bearer', { session: false }), (req, res, next) => {
res.json({ message: 'Autenticado com sucesso, exibindo conteúdo do endpoint /api.' });
return next();
});
// start server
server.listen(serverPort);
console.log('Servidor iniciado com sucesso na porta ' + serverPort)