Part allowing to add a SAML authentication
Adding the rule that the endpoint /access/saml does not need authentication

Signed-off-by: Julien BLAIS <webmas...@jbsky.fr>
---
 PVE/HTTPServer.pm               |  3 +-
 www/manager6/Makefile           |  1 +
 www/manager6/Utils.js           |  5 +++
 www/manager6/dc/AuthEditSAML.js | 65 +++++++++++++++++++++++++++++++++
 4 files changed, 73 insertions(+), 1 deletion(-)
 create mode 100644 www/manager6/dc/AuthEditSAML.js

diff --git a/PVE/HTTPServer.pm b/PVE/HTTPServer.pm
index 636b562b..3e64943a 100755
--- a/PVE/HTTPServer.pm
+++ b/PVE/HTTPServer.pm
@@ -68,7 +68,8 @@ sub auth_handler {
 
     # explicitly allow some calls without auth
     if (($rel_uri eq '/access/domains' && $method eq 'GET') ||
-       ($rel_uri eq '/access/ticket' && ($method eq 'GET' || $method eq 
'POST'))) {
+       ($rel_uri eq '/access/ticket' && ($method eq 'GET' || $method eq 
'POST')) ||
+       ($rel_uri eq '/access/saml' && $method eq 'GET' )) {
        $require_auth = 0;
     }
 
diff --git a/www/manager6/Makefile b/www/manager6/Makefile
index 506b5a4e..fc89215e 100644
--- a/www/manager6/Makefile
+++ b/www/manager6/Makefile
@@ -119,6 +119,7 @@ JSSRC=                                                      
\
        dc/AuthEditBase.js                              \
        dc/AuthEditAD.js                                \
        dc/AuthEditLDAP.js                              \
+       dc/AuthEditSAML.js                              \
        dc/AuthView.js                                  \
        dc/Backup.js                                    \
        dc/Cluster.js                                   \
diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js
index d9567979..600b81e9 100644
--- a/www/manager6/Utils.js
+++ b/www/manager6/Utils.js
@@ -740,6 +740,11 @@ Ext.define('PVE.Utils', {
            syncipanel: 'pveAuthLDAPSyncPanel',
            add: true,
        },
+       saml: {
+           name: gettext('SAMLv2'),
+           ipanel: 'pveAuthSAMLPanel',
+           add: true,
+       },
        pam: {
            name: 'Linux PAM',
            ipanel: 'pveAuthBasePanel',
diff --git a/www/manager6/dc/AuthEditSAML.js b/www/manager6/dc/AuthEditSAML.js
new file mode 100644
index 00000000..3794bccd
--- /dev/null
+++ b/www/manager6/dc/AuthEditSAML.js
@@ -0,0 +1,65 @@
+Ext.define('PVE.panel.SAMLInputPanel', {
+    extend: 'PVE.panel.AuthBase',
+    xtype: 'pveAuthSAMLPanel',
+
+    initComponent: function() {
+       let me = this;
+
+       if (me.type !== 'saml') {
+           throw 'invalid type';
+       }
+
+       me.column1 = [
+           {
+               xtype: 'textfield',
+               name: 'Identity_Provider_Entity_ID',
+               fieldLabel: gettext('IdP Entity ID'),
+               emptyText: '',
+               allowBlank: false,
+           },
+           {
+               xtype: 'textfield',
+               name: 'Identity_Provider_Url_Metadata',
+               emptyText: '',
+               fieldLabel: gettext('IdP Url Metadata'),
+               allowBlank: true,
+           },
+           {
+               name: 'Identity_Provider_x509_CA_Certificate',
+               emptyText: '',
+               fieldLabel: gettext('IdP x509 CA Certificate'),
+               allowBlank: true,
+               xtype: 'textarea',
+           },
+       ];
+
+       me.column2 = [
+           {
+               xtype: 'textfield',
+               fieldLabel: gettext('SP Entity ID'),
+               allowBlank: false,
+               name: 'Service_Provider_Entity_ID',
+           },
+           {
+               xtype: 'textarea',
+               fieldLabel: gettext('SP Private key'),
+               allowBlank: true,
+               name: 'Service_Provider_Private_Key',
+           }
+       ];
+
+       me.callParent();
+    },
+    onGetValues: function(values) {
+       let me = this;
+
+       if (!values.verify) {
+           if (!me.isCreate) {
+               Proxmox.Utils.assemble_field_data(values, { 'delete': 'verify' 
});
+           }
+           delete values.verify;
+       }
+
+       return me.callParent([values]);
+    },
+});
-- 
2.20.1


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to