continued oidc

This commit is contained in:
Bruno Roesner 2024-09-29 18:39:24 -04:00
parent bb9d1d4bcc
commit 813ea5944b
6 changed files with 29 additions and 15 deletions

View file

@ -15,4 +15,7 @@ JWT_SECRET=TOKEN!
# Pour creer les liens images # Pour creer les liens images
SESSION_Secret='session_secret' SESSION_Secret='session_secret'
FRONTEND_URL=http://localhost:5173
SITE_URL=http://localhost
FRONTEND_PORT=5173
USE_PORTS=false

View file

@ -17,6 +17,12 @@ const authRouter = require('./routers/auth.js')
// Setup environement // Setup environement
dotenv.config(); dotenv.config();
// Setup urls from configs
const use_ports = (process.env['USE_PORTS']).toLocaleLowerCase() == "true"
process.env['FRONTEND_URL'] = process.env['SITE_URL'] + (use_ports ? `:${process.env['FRONTEND_PORT']}`:"")
process.env['BACKEND_URL'] = process.env['SITE_URL'] + (use_ports ? `:${process.env['PORT']}`:"")
const db = require('./config/db.js'); const db = require('./config/db.js');
const errorHandler = require("./middleware/errorHandler.js"); const errorHandler = require("./middleware/errorHandler.js");

View file

@ -2,12 +2,13 @@ var OAuth2Strategy = require('passport-oauth2')
class PassportOAuth { class PassportOAuth {
register(app, passport,endpoint, name, provider) { register(app, passport,endpoint, name, provider) {
const cb_url =`${process.env['BACKEND_URL']}${endpoint}/${name}/callback`
passport.use(name, new OAuth2Strategy({ passport.use(name, new OAuth2Strategy({
authorizationURL: provider.OAUTH_AUTHORIZATION_URL, authorizationURL: provider.OAUTH_AUTHORIZATION_URL,
tokenURL: provider.OAUTH_TOKEN_URL, tokenURL: provider.OAUTH_TOKEN_URL,
clientID: provider.OAUTH_CLIENT_ID, clientID: provider.OAUTH_CLIENT_ID,
clientSecret: provider.OAUTH_CLIENT_SECRET, clientSecret: provider.OAUTH_CLIENT_SECRET,
callbackURL: `${endpoint}/${name}/callback`, callbackURL: cb_url,
passReqToCallback: true passReqToCallback: true
}, },
async function(req, accessToken, refreshToken, params, profile, done) { async function(req, accessToken, refreshToken, params, profile, done) {
@ -64,4 +65,4 @@ class PassportOAuth {
} }
} }
module.exports = PassportOAuth; module.exports = PassportOAuth;

View file

@ -14,6 +14,7 @@ class PassportOpenIDConnect {
async register(app, passport,endpoint, name, provider) { async register(app, passport,endpoint, name, provider) {
const config = await this.getConfigFromConfigURL(name,provider) const config = await this.getConfigFromConfigURL(name,provider)
const cb_url =`${process.env['BACKEND_URL']}${endpoint}/${name}/callback`
passport.use(name, new OpenIDConnectStrategy({ passport.use(name, new OpenIDConnectStrategy({
issuer: config.issuer, issuer: config.issuer,
@ -22,8 +23,7 @@ class PassportOpenIDConnect {
userInfoURL: config.userinfo_endpoint, userInfoURL: config.userinfo_endpoint,
clientID: provider.OIDC_CLIENT_ID, clientID: provider.OIDC_CLIENT_ID,
clientSecret: provider.OIDC_CLIENT_SECRET, clientSecret: provider.OIDC_CLIENT_SECRET,
// callbackURL: `http://localhost:4400/api/auth/${name}/callback`, callbackURL: cb_url,
callbackURL: `{endpoint}/${name}/callback`,
passReqToCallback: true, passReqToCallback: true,
scope: 'openid profile email ' + `${provider.OIDC_ADD_SCOPE}`, scope: 'openid profile email ' + `${provider.OIDC_ADD_SCOPE}`,
}, },
@ -35,8 +35,9 @@ class PassportOpenIDConnect {
email: profile.emails[0].value, email: profile.emails[0].value,
name: profile.name.givenName, name: profile.name.givenName,
}; };
return cb(null, user); return done(null, user);
} catch (error) { } catch (error) {
} }
})); }));

View file

@ -21,7 +21,6 @@
"nodemailer": "^6.9.9", "nodemailer": "^6.9.9",
"passport": "^0.7.0", "passport": "^0.7.0",
"passport-oauth2": "^1.8.0", "passport-oauth2": "^1.8.0",
"passport-openid-oauth20": "^1.2.6",
"passport-openidconnect": "^0.1.2", "passport-openidconnect": "^0.1.2",
"patch-package": "^8.0.0", "patch-package": "^8.0.0",
"socket.io": "^4.7.2", "socket.io": "^4.7.2",
@ -4820,14 +4819,6 @@
"url": "https://github.com/sponsors/jaredhanson" "url": "https://github.com/sponsors/jaredhanson"
} }
}, },
"node_modules/passport-openid-oauth20": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/passport-openid-oauth20/-/passport-openid-oauth20-1.2.6.tgz",
"integrity": "sha512-L9OMSH/sT73gvk0TLU2UaWb1Gk5KqQB4c9penDTtpZGw6czzznaiA+xPzOAygGtqAIcfQXbW0d3e/UItxjoODQ==",
"dependencies": {
"passport-oauth2": "^1.5.0"
}
},
"node_modules/passport-openidconnect": { "node_modules/passport-openidconnect": {
"version": "0.1.2", "version": "0.1.2",
"resolved": "https://registry.npmjs.org/passport-openidconnect/-/passport-openidconnect-0.1.2.tgz", "resolved": "https://registry.npmjs.org/passport-openidconnect/-/passport-openidconnect-0.1.2.tgz",

View file

@ -0,0 +1,12 @@
diff --git a/node_modules/passport-openidconnect/lib/profile.js b/node_modules/passport-openidconnect/lib/profile.js
index eeabf4e..8abe391 100644
--- a/node_modules/passport-openidconnect/lib/profile.js
+++ b/node_modules/passport-openidconnect/lib/profile.js
@@ -17,6 +17,7 @@ exports.parse = function(json) {
if (json.middle_name) { profile.name.middleName = json.middle_name; }
}
if (json.email) { profile.emails = [ { value: json.email } ]; }
+ if (json.groups) { profile.groups = [ { value: json.groups } ]; }
return profile;
};