Official SAML plugin: minor issue when no certs configured
Describe the current behavior On an otherwise healthy default PeerTube 2.4 installation with only the saml2.0 plugin installed, without service provider certificates configured, the default entity_id https:///plugins/auth-saml2/router/metadata.xml returns a 500 Internal server error.
Steps to reproduce:
- Install PeerTube 2.4 and official SAML 2.0 plugin.
- Request https:///plugins/auth-saml2/router/metadata.xml using browser/wget/whatever.
- Receive 500 Internal server error.
Describe the expected behavior Based upon https://framagit.org/framasoft/peertube/official-plugins/-/tree/master/peertube-plugin-auth-saml2/README.md , I'd expect service provider certificate generation to be optional. I'd expected to be able to retrieve at least some information about the SAML 2.0 service provider at the metadata URL, or a warning about needing certificates configured.
A fix may be as quick as updating https://framagit.org/framasoft/peertube/official-plugins/-/tree/master/peertube-plugin-auth-saml2/README.md to mention service provider certificate generation is not optional. If that's the preferred rout, I'll gladly file a tiny pull request.
/var/log/syslog:
Nov 12 21:43:46 peertube peertube[26491]: [peertube.lusis.eu:443] 2020-11-12 21:43:46.814 #033[31merror#033[39m: Error in controller. { Nov 12 21:43:46 peertube peertube[26491]: "err": "Error: Invalid Certificate\n at extract_certificate_data (/var/www/peertube/versions/peertube-v2.4.0/storage/plugins/node_modules/saml2-js/lib-js/saml2.js:255:11)\n at certificate_to_keyinfo (/var/www/peertube/versions/peertube-v2.4.0/storage/plugins/node_modules/saml2-js/lib-js/saml2.js:244:31)\n at /var/www/peertube/versions/peertube-v2.4.0/storage/plugins/node_modules/saml2-js/lib-js/saml2.js:112:29\n at create_metadata (/var/www/peertube/versions/peertube-v2.4.0/storage/plugins/node_modules/saml2-js/lib-js/saml2.js:116:5)\n at ServiceProvider.module.exports.ServiceProvider.ServiceProvider.create_metadata (/var/www/peertube/versions/peertube-v2.4.0/storage/plugins/node_modules/saml2-js/lib-js/saml2.js:946:12)\n at ServiceProvider.create_metadata (/var/www/peertube/versions/peertube-v2.4.0/storage/plugins/node_modules/saml2-js/lib-js/saml2.js:6:57)\n at /var/www/peertube/versions/peertube-v2.4.0/storage/plugins/node_modules/peertube-plugin-auth-saml2/main.js:117:60\n at Layer.handle [as handle_request] (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/layer.js:95:5)\n at next (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/route.js:137:13)\n at Route.dispatch (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/route.js:112:3)\n at Layer.handle [as handle_request] (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/layer.js:95:5)\n at /var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:281:22\n at Function.process_params (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:335:12)\n at next (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:275:10)\n at Function.handle (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:174:3)\n at router (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:47:12)\n at servePluginCustomRoutes (/var/www/peertube/versions/peertube-v2.4.0/dist/server/controllers/plugins.js:60:12)\n at Layer.handle [as handle_request] (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/layer.js:95:5)\n at trim_prefix (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:317:13)\n at /var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:284:7\n at param (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:354:14)\n at param (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:365:14)\n at Function.process_params (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:410:3)\n at next (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:275:10)\n at /var/www/peertube/versions/peertube-v2.4.0/dist/server/middlewares/validators/plugins.js:32:20\n at Layer.handle [as handle_request] (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/layer.js:95:5)\n at trim_prefix (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:317:13)\n at /var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:284:7\n at param (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:354:14)\n at param (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:365:14)\n at Function.process_params (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:410:3)\n at next (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express/lib/router/index.js:275:10)\n at middleware (/var/www/peertube/versions/peertube-v2.4.0/node_modules/express-validator/src/middlewares/check.js:16:13)\n at runMicrotasks (<anonymous>)" Nov 12 21:43:46 peertube peertube[26491]: } Nov 12 21:43:46 peertube peertube[26491]: [peertube.lusis.eu:443] 2020-11-12 21:43:46.819 #033[32minfo#033[39m: 94.105.0.0 - - [12/Nov/2020:20:43:46 +0000] "GET /plugins/auth-saml2/router/metadata.xml HTTP/1.0" 500 - "-" "Firefox"
relevant bit from journalctl:
Nov 12 21:43:46 peertube peertube[26491]: [peertube.lusis.eu:443] 2020-11-12 21:43:46.814 error: Error in controller. { Nov 12 21:43:46 peertube peertube[26491]: "err": "Error: Invalid Certificate\n at extract_certificate_data (/var/www/peertube/versions/peertube-v2.4.0/storage/plugins/node_modules/saml2-js/lib-js/saml2.js:255:11)\n at Nov 12 21:43:46 peertube peertube[26491]: } Nov 12 21:43:46 peertube peertube[26491]: [peertube.lusis.eu:443] 2020-11-12 21:43:46.819 info: 94.105.0.0 - - [12/Nov/2020:20:43:46 +0000] "GET /plugins/auth-saml2/router/metadata.xml HTTP/1.0" 500 - "-" "Firefox"