Skip to content
Snippets Groups Projects
Commit 005538c4 authored by Jørn Åne de Jong's avatar Jørn Åne de Jong
Browse files

Working example

parents
No related branches found
No related tags found
No related merge requests found
node_modules
web: node index.js
# Feide Connect OAuth 2.0 NodeJS express application
## Endpoints
### /
Show information about the session
### /login
Will redirect to Feide Connect login page
### /callback
Used by Feide Connect OAuth 2.0 for callback
## Envirnoment variables
### FC_CLIENT_ID
Client ID as shown on https://dashboard.feideconnect.no
### FC_CLIENT_SECRET
Client Secret as shown on https://dashboard.feideconnect.no
### FC_CALLBACK_URL
Redirect URL as shown on https://dashboard.feideconnect.no
### VCAP_APP_PORT
Portnumber to listen for HTTP, set by Cloud Foundry
index.js 0 → 100644
var express = require('express');
var app = express();
var passport = require('passport');
var feideconnect = require('passport-feideconnect-oauth2');
var FeideConnectStrategy = feideconnect.Strategy;
var session = require('express-session')
app.use(session({
genid: function(req) {
return require('crypto').randomBytes(48).toString('hex');
},
secret: 'keyboard cat',
resave: false,
saveUninitialized: true
}))
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
app.use(passport.initialize());
app.use(passport.session());
passport.use(new FeideConnectStrategy({
clientID: process.env.FC_CLIENT_ID,
clientSecret: process.env.FC_CLIENT_SECRET,
callbackURL: process.env.FC_CALLBACK_URL
},
function(accessToken, refreshToken, profile, done) {
done(null, profile);
}
));
// respond with "hello world" when a GET request is made to the homepage
app.get('/', function(req, res) {
session = req.session
if (session.passport) {
return res.send(session.passport.user._json.user)
} else {
return res.send(JSON.stringify(req.sessionStore));
}
});
app.get('/login', passport.authenticate('feideconnect', { successRedirect: '/', failureRedirect: '/login' }));
app.get('/callback',
passport.authenticate('feideconnect', { failureRedirect: '/login' }),
function(req, res) {
// Successful authentication, redirect home.
res.redirect('/');
}
);
app.listen(process.env.VCAP_APP_PORT);
{
"name": "feide-express",
"version": "0.0.1",
"description": "Test application for Passport OAuth2 connector for Feide Connect",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Jørn Åne de Jong <jorn.dejong@uninett.no>",
"license": "ISC",
"dependencies": {
"cookie-session": "^1.2.0",
"express": "^4.13.3",
"express-session": "^1.11.3",
"passport": "^0.3.0",
"passport-feideconnect-oauth2": "*"
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment