diff --git a/examples/keycloak-auth-hook.js b/examples/keycloak-auth-hook.js index d01168c946..723fb28d1e 100644 --- a/examples/keycloak-auth-hook.js +++ b/examples/keycloak-auth-hook.js @@ -7,7 +7,7 @@ * keycloak should have access. You would probably limit access * to users you trust. * - * The implementation assumes the following environement variables: + * The implementation assumes the following environment variables: * * - AUTH_HOST * - AUTH_REALM @@ -17,30 +17,26 @@ // const { User, AuthenticationRequired } = require('unleash-server'); const { User, AuthenticationRequired } = require('../lib/server-impl.js'); - -const KeycloakStrategy = require("@exlinc/keycloak-passport"); +const KeycloakStrategy = require('@exlinc/keycloak-passport'); const passport = require('passport'); -const kcConfig = { - host: "http://" + process.env.AUTH_HOST, - realm: process.env.AUTH_REALM, - clientId: process.env.AUTH_CLIENT_ID, - contextPath: '', // Use when Unleash is hosted on an url like /unleash/ - clientSecret: "", -}; +const host = `http://${process.env.AUTH_HOST}`; +const realm = process.env.AUTH_REALM; +const clientId = process.env.AUTH_CLIENT_ID; +const contextPath = process.env.CONTEXT_PATH; passport.use( - "keycloak", + 'keycloak', new KeycloakStrategy( { - host: kcConfig.host, - realm: kcConfig.realm, - clientID: kcConfig.clientId, + host, + realm, + clientId, clientSecret: "We don't need that, but is required", - callbackURL: `${kcConfig.contextPath}/api/auth/callback`, - authorizationURL: `${kcConfig.host}/auth/realms/hamis/protocol/openid-connect/auth`, - tokenURL: `${kcConfig.host}/auth/realms/hamis/protocol/openid-connect/token`, - userInfoURL: `${kcConfig.host}/auth/realms/hamis/protocol/openid-connect/userinfo` + callbackURL: `${contextPath}/api/auth/callback`, + authorizationURL: `${host}/auth/realms/hamis/protocol/openid-connect/auth`, + tokenURL: `${host}/auth/realms/hamis/protocol/openid-connect/token`, + userInfoURL: `${host}/auth/realms/hamis/protocol/openid-connect/userinfo`, }, (accessToken, refreshToken, profile, done) => { @@ -61,11 +57,16 @@ function enableKeycloakOauth(app) { passport.serializeUser((user, done) => done(null, user)); passport.deserializeUser((user, done) => done(null, user)); + app.get('/api/admin/login', passport.authenticate('keycloak')); - app.get('/api/auth/callback', passport.authenticate('keycloak'), (req, res, next) => { - res.redirect(`${kcConfig.contextPath}/`); - }); + app.get( + '/api/auth/callback', + passport.authenticate('keycloak'), + (req, res) => { + res.redirect(`${contextPath}/`); + } + ); app.use('/api/admin/', (req, res, next) => { if (req.user) { @@ -76,7 +77,7 @@ function enableKeycloakOauth(app) { .status('401') .json( new AuthenticationRequired({ - path: `${kcConfig.contextPath}/api/admin/login`, + path: `${contextPath}/api/admin/login`, type: 'custom', message: `You have to identify yourself in order to use Unleash. Click the button and follow the instructions.`,