Express.js (Passport)
See the Applications overview for prerequisites, configuration endpoints, and available scopes.
Install the required packages:
npm install passport passport-openidconnect express-session
Configure Passport in your Express application:
const express = require("express");
const session = require("express-session");
const passport = require("passport");
const OpenIDConnectStrategy = require("passport-openidconnect");
const app = express();
app.use(
session({
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: false,
})
);
app.use(passport.initialize());
app.use(passport.session());
passport.use(
"vouch",
new OpenIDConnectStrategy(
{
issuer: "https://us.vouch.sh",
authorizationURL: "https://us.vouch.sh/oauth/authorize",
tokenURL: "https://us.vouch.sh/oauth/token",
userInfoURL: "https://us.vouch.sh/oauth/userinfo",
clientID: process.env.VOUCH_CLIENT_ID,
clientSecret: process.env.VOUCH_CLIENT_SECRET,
callbackURL: "https://your-app.example.com/auth/vouch/callback",
scope: "openid email",
},
(issuer, profile, done) => {
// Find or create user based on profile
return done(null, profile);
}
)
);
passport.serializeUser((user, done) => done(null, user));
passport.deserializeUser((user, done) => done(null, user));
app.get("/auth/vouch", passport.authenticate("vouch"));
app.get(
"/auth/vouch/callback",
passport.authenticate("vouch", {
successRedirect: "/",
failureRedirect: "/login",
})
);
app.listen(3000);