fix oidc paths with aliasport #6148

Signed-off-by: si458 <simonsmith5521@gmail.com>

si458 committed Jun 4, 2024 at 10:26 UTC 69769927350a3146f1f4c4ce2dcebaea5937d3ae
1 file changed +12 -8
webserver.js
+12 -8
@@ -6772,13 +6772,13 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
6772 if (domain.passport == null) { next(); return; }
6773 domain.passport.authenticate(`oidc-${domain.id}`, { failureRedirect: '/', failureFlash: true })(req, res, next);
6774 });
6775 - let redirectPath
6775 + let redirectPath;
6776 if (typeof domain.authstrategies.oidc.client.redirect_uri == 'string') {
6777 - redirectPath = (new URL(domain.authstrategies.oidc.client.redirect_uri)).pathname
6777 + redirectPath = (new URL(domain.authstrategies.oidc.client.redirect_uri)).pathname;
6778 } else if (Array.isArray(domain.authstrategies.oidc.client.redirect_uris)) {
6779 - redirectPath = (new URL(domain.authstrategies.oidc.client.redirect_uris[0])).pathname
6779 + redirectPath = (new URL(domain.authstrategies.oidc.client.redirect_uris[0])).pathname;
6780 } else {
6781 - redirectPath = url + 'auth-oidc-callback'
6781 + redirectPath = url + 'auth-oidc-callback';
6782 }
6783 parent.authLog('setupHTTPHandlers', `OIDC: Callback URL: ${redirectPath}`);
6784 obj.app.get(redirectPath, obj.bodyParser.urlencoded({ extended: false }), function (req, res, next) {
@@ -7417,15 +7417,19 @@ module.exports.CreateWebServer = function (parent, db, args, certificates, doneF
7417 parent.authLog('setupDomainAuthStrategy', `OIDC: Adding Issuer Metadata: ${JSON.stringify(strategy.issuer)}`);
7418 issuer = new strategy.obj.openidClient.Issuer(Object.assign(issuer?.metadata, strategy.issuer));
7419 }
7420 - strategy.issuer = issuer?.metadata
7421 - strategy.obj.issuer = issuer
7420 + strategy.issuer = issuer?.metadata;
7421 + strategy.obj.issuer = issuer;
7422 +
7423 + var httpport = ((args.aliasport != null) ? args.aliasport : args.port);
7424 + var origin = 'https://' + (domain.dns ? domain.dns : parent.certificates.CommonName);
7425 + if (httpport != 443) { origin += ':' + httpport; }
7426
7427 // Make sure redirect_uri and post_logout_redirect_uri exist before continuing
7428 if (!strategy.client.redirect_uri) {
7425 - strategy.client.redirect_uri = 'https://' + parent.config.settings.cert + url + 'auth-oidc-callback';
7429 + strategy.client.redirect_uri = origin + url + 'auth-oidc-callback';
7430 }
7431 if (!strategy.client.post_logout_redirect_uri) {
7428 - strategy.client.post_logout_redirect_uri = 'https://' + parent.config.settings.cert + url + 'login';
7432 + strategy.client.post_logout_redirect_uri = origin + url + 'login';
7433 }
7434
7435 // Create client and overwrite in options