From 77e600ce809fa366dcd5b04db4dcafa3e89a56d4 Mon Sep 17 00:00:00 2001 From: yflory Date: Mon, 30 Oct 2023 17:14:27 +0100 Subject: [PATCH] Add signing certificate to SAML auth --- lib/plugins/sso/saml.js | 8 ++++++++ scripts/saml-metadata.js | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 scripts/saml-metadata.js diff --git a/lib/plugins/sso/saml.js b/lib/plugins/sso/saml.js index 7f7d7edfb..1b7333db8 100644 --- a/lib/plugins/sso/saml.js +++ b/lib/plugins/sso/saml.js @@ -28,11 +28,19 @@ const getClient = (cfg, cb) => { entryPoint: cfg.url, issuer: cfg.issuer, cert: cfg.cert, + privateKey: cfg.privateKey }); cb(void 0, saml); }; +const getMetadata = (cfg, cb) => { + getClient(cfg, (err, client) => { + if (err) { return void cb(err); } + cb(null, client.generateServiceProviderMetadata(null, cfg.signingCert)); + }); +}; module.exports = { type: TYPE, + getMetadata: getMetadata, checkConfig: (cfg) => { return cfg.url && cfg.issuer && cfg.cert; }, diff --git a/scripts/saml-metadata.js b/scripts/saml-metadata.js new file mode 100644 index 000000000..eec57ebef --- /dev/null +++ b/scripts/saml-metadata.js @@ -0,0 +1,16 @@ +const config = require("../lib/load-config"); +const SSOUtils = require('../lib/sso-utils'); + +const sso = config.sso; +sso.list.filter((el) => { + return el.type === 'saml'; +}).forEach((cfg) => { + SSOUtils.TYPES.saml.getMetadata(cfg, (err, md) => { + console.log(`Name: ${cfg.name}`); + console.log('Metadata:'); + console.log(); + console.log(md); + console.log(); + console.log('===================================='); + }); +});