forked from Azure-Samples/active-directory-node-webapi-basic
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
45 lines (35 loc) · 1.27 KB
/
app.js
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
'use strict';
const
restify = require('restify')
, restifyPlugins = require ('restify').plugins
, 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 Directroy with Node.js Demo' });
server.use(restifyPlugins.authorizationParser());
server.use(passport.initialize());
server.use(passport.session());
server.get('/', (req, res, next) => {
res.send(200, 'Try: curl -isS -X GET http://127.0.0.1:3000/api');
return next();
});
server.get('/api', passport.authenticate('oauth-bearer', { session: false }), (req, res, next) => {
res.json({ message: 'response from API endpoint' });
return next();
});
server.listen(serverPort);