-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpassport-config.js
85 lines (73 loc) · 2.41 KB
/
passport-config.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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
var passport = require('passport');
const PredixStrategy = require('passport-predix-oauth').Strategy;
const OAuth2RefreshTokenStrategy = require('passport-oauth2-middleware').Strategy;
const config = require('./predix-config');
const request = require('request');
var predixStrategy;
function configurePassportStrategy(predixConfig) {
'use strict';
var refreshStrategy = new OAuth2RefreshTokenStrategy({
refreshWindow: 10, // Time in seconds to perform a token refresh before it expires
userProperty: 'ticket', // Active user property name to store OAuth tokens
authenticationURL: '/', // URL to redirect unathorized users to
callbackParameter: 'callback' //URL query parameter name to pass a return URL
});
passport.use('main', refreshStrategy);
passport.serializeUser(function(user, done) {
// console.log("From USER-->"+JSON.stringify(user));
done(null, user);
});
passport.deserializeUser(function(obj, done) {
done(null, obj);
});
predixStrategy = new PredixStrategy({
clientID: config.clientId,
clientSecret: config.clientSecret,
callbackURL: config.callbackURL,
uaaURL: config.uaaURL
},
function(accessToken, refreshToken, user, done) {
request({
method: 'post',
url: config.uaaURL + '/check_token',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic ' + Buffer.from(config.clientId + ':' + config.clientSecret).toString('base64')
},
form: {
'token': accessToken
}
}, function(error, response, body) {
user.ticket = user.ticket? user.ticket : {};
user.ticket.access_token = accessToken;
user.ticket.refresh_token = refreshToken;
var userinfo = JSON.parse(body);
if (error || userinfo.error !== undefined) {
// return an error, don't forget this step
} else {
// Merge existing parsed user data with UAA userinfo data
// into a existing user
for (var key in userinfo) {
if (userinfo.hasOwnProperty(key)) {
user[key] = userinfo[key];
}
}
}
// console.log("User" + JSON.stringify(user))
done(null, user);
});
}
);
passport.use(predixStrategy);
//Register the OAuth strategy to perform OAuth2 refresh token workflow
refreshStrategy.useOAuth2Strategy(predixStrategy);
return passport;
}
function reset() {
'use strict';
predixStrategy.reset();
}
module.exports = {
configurePassportStrategy: configurePassportStrategy,
reset: reset
};