diff --git a/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/ReConstants.pm b/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/ReConstants.pm index 2df87c9f3..b2b419a1b 100644 --- a/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/ReConstants.pm +++ b/lemonldap-ng-common/lib/Lemonldap/NG/Common/Conf/ReConstants.pm @@ -24,7 +24,7 @@ our $specialNodeHash = { our $doubleHashKeys = 'issuerDBGetParameters'; our $simpleHashKeys = '(?:(?:l(?:o(?:calSessionStorageOption|goutService)|dapExportedVar|wp(?:Ssl)?Opt)|re(?:moteGlobalStorageOption|st2f(?:Verify|Init)Arg|loadUrl)|c(?:as(?:StorageOption|Attribute)|ustomAddParam|ombModule)|(?:(?:d(?:emo|bi)|facebook|webID)E|e)xportedVar|g(?:r(?:antSessionRule|oup)|lobalStorageOption)|n(?:otificationStorageOption|ginxCustomHandler)|p(?:ersistentStorageOption|ortalSkinRule)|macro)s|o(?:idcS(?:erviceMetaDataAuthnContext|torageOptions)|penIdExportedVars)|s(?:(?:amlStorageOption|laveExportedVar)s|essionDataToRemember)|a(?:ut(?:hChoiceMod|oSigninR)ules|pplicationList)|S(?:MTPTLSOpts|SLVarIf))'; our $specialNodeKeys = '(?:(?:(?:saml(?:ID|S)|oidc[OR])P|cas(?:App|Srv))MetaDataNode|virtualHost)s'; -our $casAppMetaDataNodeKeys = 'casAppMetaData(?:Options(?:Servic|Rul)e|ExportedVars)'; +our $casAppMetaDataNodeKeys = 'casAppMetaData(?:Options(?:UserAttribut|Servic|Rul)e|ExportedVars)'; our $casSrvMetaDataNodeKeys = 'casSrvMetaData(?:Options(?:ProxiedServices|DisplayName|SortNumber|Gateway|Renew|Icon|Url)|ExportedVars)'; our $oidcOPMetaDataNodeKeys = 'oidcOPMetaData(?:Options(?:C(?:lient(?:Secret|ID)|heckJWTSignature|onfigurationURI)|S(?:toreIDToken|ortNumber|cope)|TokenEndpointAuthMethod|(?:JWKSTimeou|Promp)t|I(?:DTokenMaxAge|con)|U(?:iLocales|seNonce)|Display(?:Name)?|AcrValues|MaxAge)|ExportedVars|J(?:SON|WKS))'; our $oidcRPMetaDataNodeKeys = 'oidcRPMetaData(?:Options(?:(?:PostLogoutRedirectUri|ExtraClaim)s|I(?:DToken(?:Expiration|SignAlg)|con)|Logout(?:SessionRequired|Type|Url)|AccessTokenExpiration|R(?:edirectUris|ule)|Client(?:Secret|ID)|BypassConsent|DisplayName|UserIDAttr)|ExportedVars)'; diff --git a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Attributes.pm b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Attributes.pm index c20893ce1..4c64681cb 100644 --- a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Attributes.pm +++ b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Attributes.pm @@ -678,6 +678,9 @@ sub attributes { 'casAppMetaDataOptionsService' => { 'type' => 'url' }, + 'casAppMetaDataOptionsUserAttribute' => { + 'type' => 'text' + }, 'casAttr' => { 'type' => 'text' }, diff --git a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/Attributes.pm b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/Attributes.pm index fa4f67306..2ee4b383f 100644 --- a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/Attributes.pm +++ b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/Attributes.pm @@ -1824,6 +1824,10 @@ sub attributes { type => 'url', documentation => 'CAS App service', }, + casAppMetaDataOptionsUserAttribute => { + type => 'text', + documentation => 'CAS User attribute', + }, casAppMetaDataOptionsRule => { type => 'text', test => $perlExpr, diff --git a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/CTrees.pm b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/CTrees.pm index cbcd5ec0d..e4dc37629 100644 --- a/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/CTrees.pm +++ b/lemonldap-ng-manager/lib/Lemonldap/NG/Manager/Build/CTrees.pm @@ -252,6 +252,7 @@ sub cTrees { form => 'simpleInputContainer', nodes => [ 'casAppMetaDataOptionsService', + 'casAppMetaDataOptionsUserAttribute', 'casAppMetaDataOptionsRule' ] }, diff --git a/lemonldap-ng-manager/site/htdocs/static/js/conftree.js b/lemonldap-ng-manager/site/htdocs/static/js/conftree.js index 4d73753c4..9f31e4285 100644 --- a/lemonldap-ng-manager/site/htdocs/static/js/conftree.js +++ b/lemonldap-ng-manager/site/htdocs/static/js/conftree.js @@ -17,6 +17,11 @@ function templates(tpl,key) { "id" : tpl+"s/"+key+"/"+"casAppMetaDataOptionsService", "title" : "casAppMetaDataOptionsService" }, + { + "get" : tpl+"s/"+key+"/"+"casAppMetaDataOptionsUserAttribute", + "id" : tpl+"s/"+key+"/"+"casAppMetaDataOptionsUserAttribute", + "title" : "casAppMetaDataOptionsUserAttribute" + }, { "get" : tpl+"s/"+key+"/"+"casAppMetaDataOptionsRule", "id" : tpl+"s/"+key+"/"+"casAppMetaDataOptionsRule", diff --git a/lemonldap-ng-manager/site/htdocs/static/js/conftree.min.js b/lemonldap-ng-manager/site/htdocs/static/js/conftree.min.js index ab14da7d9..409772bca 100644 --- a/lemonldap-ng-manager/site/htdocs/static/js/conftree.min.js +++ b/lemonldap-ng-manager/site/htdocs/static/js/conftree.min.js @@ -1 +1 @@ -function templates(tpl,key){var ind;var scalarTemplate=function(r){return{id:tpl+"s/"+ind++,title:r,get:tpl+"s/"+key+"/"+r}};switch(tpl){case"casAppMetaDataNode":return[{_nodes:[{get:tpl+"s/"+key+"/"+"casAppMetaDataOptionsService",id:tpl+"s/"+key+"/"+"casAppMetaDataOptionsService",title:"casAppMetaDataOptionsService"},{get:tpl+"s/"+key+"/"+"casAppMetaDataOptionsRule",id:tpl+"s/"+key+"/"+"casAppMetaDataOptionsRule",title:"casAppMetaDataOptionsRule"}],id:"casAppMetaDataOptions",title:"casAppMetaDataOptions",type:"simpleInputContainer"},{cnodes:tpl+"s/"+key+"/"+"casAppMetaDataExportedVars",default:[{data:"cn",id:tpl+"s/"+key+"/"+"casAppMetaDataExportedVars/cn",title:"cn",type:"keyText"},{data:"mail",id:tpl+"s/"+key+"/"+"casAppMetaDataExportedVars/mail",title:"mail",type:"keyText"},{data:"uid",id:tpl+"s/"+key+"/"+"casAppMetaDataExportedVars/uid",title:"uid",type:"keyText"}],id:tpl+"s/"+key+"/"+"casAppMetaDataExportedVars",title:"casAppMetaDataExportedVars",type:"keyTextContainer"}];case"casSrvMetaDataNode":return[{cnodes:tpl+"s/"+key+"/"+"casSrvMetaDataExportedVars",default:[{data:"cn",id:tpl+"s/"+key+"/"+"casSrvMetaDataExportedVars/cn",title:"cn",type:"keyText"},{data:"mail",id:tpl+"s/"+key+"/"+"casSrvMetaDataExportedVars/mail",title:"mail",type:"keyText"},{data:"uid",id:tpl+"s/"+key+"/"+"casSrvMetaDataExportedVars/uid",title:"uid",type:"keyText"}],id:tpl+"s/"+key+"/"+"casSrvMetaDataExportedVars",title:"casSrvMetaDataExportedVars",type:"keyTextContainer"},{cnodes:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsProxiedServices",id:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsProxiedServices",title:"casSrvMetaDataOptionsProxiedServices",type:"keyTextContainer"},{_nodes:[{get:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsUrl",id:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsUrl",title:"casSrvMetaDataOptionsUrl"},{default:0,get:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsRenew",id:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsRenew",title:"casSrvMetaDataOptionsRenew",type:"bool"},{default:0,get:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsGateway",id:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsGateway",title:"casSrvMetaDataOptionsGateway",type:"bool"}],id:"casSrvMetaDataOptions",title:"casSrvMetaDataOptions",type:"simpleInputContainer"},{_nodes:[{get:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsDisplayName",id:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsDisplayName",title:"casSrvMetaDataOptionsDisplayName"},{get:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsIcon",id:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsIcon",title:"casSrvMetaDataOptionsIcon"},{get:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsSortNumber",id:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsSortNumber",title:"casSrvMetaDataOptionsSortNumber",type:"int"}],id:"casSrvMetaDataOptionsDisplay",title:"casSrvMetaDataOptionsDisplay",type:"simpleInputContainer"}];case"oidcOPMetaDataNode":return[{get:tpl+"s/"+key+"/"+"oidcOPMetaDataJSON",id:tpl+"s/"+key+"/"+"oidcOPMetaDataJSON",title:"oidcOPMetaDataJSON",type:"file"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataJWKS",id:tpl+"s/"+key+"/"+"oidcOPMetaDataJWKS",title:"oidcOPMetaDataJWKS",type:"file"},{cnodes:tpl+"s/"+key+"/"+"oidcOPMetaDataExportedVars",default:[{data:"name",id:tpl+"s/"+key+"/"+"oidcOPMetaDataExportedVars/cn",title:"cn",type:"keyText"},{data:"email",id:tpl+"s/"+key+"/"+"oidcOPMetaDataExportedVars/mail",title:"mail",type:"keyText"},{data:"family_name",id:tpl+"s/"+key+"/"+"oidcOPMetaDataExportedVars/sn",title:"sn",type:"keyText"},{data:"sub",id:tpl+"s/"+key+"/"+"oidcOPMetaDataExportedVars/uid",title:"uid",type:"keyText"}],id:tpl+"s/"+key+"/"+"oidcOPMetaDataExportedVars",title:"oidcOPMetaDataExportedVars",type:"keyTextContainer"},{_nodes:[{_nodes:[{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsConfigurationURI",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsConfigurationURI",title:"oidcOPMetaDataOptionsConfigurationURI"},{default:0,get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsJWKSTimeout",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsJWKSTimeout",title:"oidcOPMetaDataOptionsJWKSTimeout",type:"int"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsClientID",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsClientID",title:"oidcOPMetaDataOptionsClientID"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsClientSecret",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsClientSecret",title:"oidcOPMetaDataOptionsClientSecret",type:"password"},{default:0,get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsStoreIDToken",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsStoreIDToken",title:"oidcOPMetaDataOptionsStoreIDToken",type:"bool"}],id:"oidcOPMetaDataOptionsConfiguration",title:"oidcOPMetaDataOptionsConfiguration",type:"simpleInputContainer"},{_nodes:[{default:"openid profile",get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsScope",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsScope",title:"oidcOPMetaDataOptionsScope"},{default:"",get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsDisplay",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsDisplay",select:[{k:"",v:""},{k:"page",v:"page"},{k:"popup",v:"popup"},{k:"touch",v:"touch"},{k:"wap",v:"wap"}],title:"oidcOPMetaDataOptionsDisplay",type:"select"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsPrompt",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsPrompt",title:"oidcOPMetaDataOptionsPrompt"},{default:0,get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsMaxAge",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsMaxAge",title:"oidcOPMetaDataOptionsMaxAge",type:"int"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsUiLocales",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsUiLocales",title:"oidcOPMetaDataOptionsUiLocales"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsAcrValues",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsAcrValues",title:"oidcOPMetaDataOptionsAcrValues"},{default:"client_secret_post",get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsTokenEndpointAuthMethod",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsTokenEndpointAuthMethod",select:[{k:"client_secret_post",v:"client_secret_post"},{k:"client_secret_basic",v:"client_secret_basic"}],title:"oidcOPMetaDataOptionsTokenEndpointAuthMethod",type:"select"},{default:1,get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsCheckJWTSignature",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsCheckJWTSignature",title:"oidcOPMetaDataOptionsCheckJWTSignature",type:"bool"},{default:30,get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsIDTokenMaxAge",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsIDTokenMaxAge",title:"oidcOPMetaDataOptionsIDTokenMaxAge",type:"int"},{default:1,get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsUseNonce",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsUseNonce",title:"oidcOPMetaDataOptionsUseNonce",type:"bool"}],id:"oidcOPMetaDataOptionsProtocol",title:"oidcOPMetaDataOptionsProtocol",type:"simpleInputContainer"}],id:"oidcOPMetaDataOptions",title:"oidcOPMetaDataOptions"},{_nodes:[{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsDisplayName",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsDisplayName",title:"oidcOPMetaDataOptionsDisplayName"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsIcon",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsIcon",title:"oidcOPMetaDataOptionsIcon"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsSortNumber",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsSortNumber",title:"oidcOPMetaDataOptionsSortNumber",type:"int"}],id:"oidcOPMetaDataOptionsDisplayParams",title:"oidcOPMetaDataOptionsDisplayParams",type:"simpleInputContainer"}];case"oidcRPMetaDataNode":return[{cnodes:tpl+"s/"+key+"/"+"oidcRPMetaDataExportedVars",default:[{data:"mail",id:tpl+"s/"+key+"/"+"oidcRPMetaDataExportedVars/email",title:"email",type:"keyText"},{data:"sn",id:tpl+"s/"+key+"/"+"oidcRPMetaDataExportedVars/family_name",title:"family_name",type:"keyText"},{data:"cn",id:tpl+"s/"+key+"/"+"oidcRPMetaDataExportedVars/name",title:"name",type:"keyText"}],id:tpl+"s/"+key+"/"+"oidcRPMetaDataExportedVars",title:"oidcRPMetaDataExportedVars",type:"keyTextContainer"},{cnodes:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsExtraClaims",default:[],id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsExtraClaims",title:"oidcRPMetaDataOptionsExtraClaims",type:"keyTextContainer"},{_nodes:[{_nodes:[{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsClientID",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsClientID",title:"oidcRPMetaDataOptionsClientID"},{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsClientSecret",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsClientSecret",title:"oidcRPMetaDataOptionsClientSecret",type:"password"}],id:"oidcRPMetaDataOptionsAuthentication",title:"oidcRPMetaDataOptionsAuthentication",type:"simpleInputContainer"},{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsUserIDAttr",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsUserIDAttr",title:"oidcRPMetaDataOptionsUserIDAttr"},{default:"HS512",get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsIDTokenSignAlg",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsIDTokenSignAlg",select:[{k:"none",v:"None"},{k:"HS256",v:"HS256"},{k:"HS384",v:"HS384"},{k:"HS512",v:"HS512"},{k:"RS256",v:"RS256"},{k:"RS384",v:"RS384"},{k:"RS512",v:"RS512"}],title:"oidcRPMetaDataOptionsIDTokenSignAlg",type:"select"},{default:3600,get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsIDTokenExpiration",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsIDTokenExpiration",title:"oidcRPMetaDataOptionsIDTokenExpiration",type:"int"},{default:3600,get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsAccessTokenExpiration",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsAccessTokenExpiration",title:"oidcRPMetaDataOptionsAccessTokenExpiration",type:"int"},{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsRedirectUris",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsRedirectUris",title:"oidcRPMetaDataOptionsRedirectUris"},{default:0,get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsBypassConsent",help:"openidconnectclaims.html",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsBypassConsent",title:"oidcRPMetaDataOptionsBypassConsent",type:"bool"},{_nodes:[{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsPostLogoutRedirectUris",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsPostLogoutRedirectUris",title:"oidcRPMetaDataOptionsPostLogoutRedirectUris"},{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsLogoutUrl",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsLogoutUrl",title:"oidcRPMetaDataOptionsLogoutUrl"},{default:"front",get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsLogoutType",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsLogoutType",select:[{k:"front",v:"Front Channel"},{k:"back",v:"Back Channel"}],title:"oidcRPMetaDataOptionsLogoutType",type:"select"},{default:0,get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsLogoutSessionRequired",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsLogoutSessionRequired",title:"oidcRPMetaDataOptionsLogoutSessionRequired",type:"bool"}],id:"logout",title:"logout",type:"simpleInputContainer"},{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsRule",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsRule",title:"oidcRPMetaDataOptionsRule"}],id:"oidcRPMetaDataOptions",title:"oidcRPMetaDataOptions"},{_nodes:[{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsDisplayName",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsDisplayName",title:"oidcRPMetaDataOptionsDisplayName"},{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsIcon",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsIcon",title:"oidcRPMetaDataOptionsIcon"}],id:"oidcRPMetaDataOptionsDisplay",title:"oidcRPMetaDataOptionsDisplay",type:"simpleInputContainer"}];case"samlIDPMetaDataNode":return[{get:tpl+"s/"+key+"/"+"samlIDPMetaDataXML",id:tpl+"s/"+key+"/"+"samlIDPMetaDataXML",title:"samlIDPMetaDataXML",type:"file"},{cnodes:tpl+"s/"+key+"/"+"samlIDPMetaDataExportedAttributes",default:[],help:"authsaml.html#exported_attributes",id:tpl+"s/"+key+"/"+"samlIDPMetaDataExportedAttributes",title:"samlIDPMetaDataExportedAttributes",type:"samlAttributeContainer"},{_nodes:[{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsAdaptSessionUtime",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsAdaptSessionUtime",title:"samlIDPMetaDataOptionsAdaptSessionUtime",type:"bool"},{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsForceUTF8",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsForceUTF8",title:"samlIDPMetaDataOptionsForceUTF8",type:"bool"},{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsStoreSAMLToken",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsStoreSAMLToken",title:"samlIDPMetaDataOptionsStoreSAMLToken",type:"bool"},{get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsUserAttribute",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsUserAttribute",title:"samlIDPMetaDataOptionsUserAttribute"}],id:"samlIDPMetaDataOptionsSession",title:"samlIDPMetaDataOptionsSession",type:"simpleInputContainer"},{_nodes:[{default:-1,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSignSSOMessage",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSignSSOMessage",title:"samlIDPMetaDataOptionsSignSSOMessage",type:"trool"},{default:1,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckSSOMessageSignature",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckSSOMessageSignature",title:"samlIDPMetaDataOptionsCheckSSOMessageSignature",type:"bool"},{default:-1,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSignSLOMessage",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSignSLOMessage",title:"samlIDPMetaDataOptionsSignSLOMessage",type:"trool"},{default:1,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckSLOMessageSignature",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckSLOMessageSignature",title:"samlIDPMetaDataOptionsCheckSLOMessageSignature",type:"bool"}],id:"samlIDPMetaDataOptionsSignature",title:"samlIDPMetaDataOptionsSignature",type:"simpleInputContainer"},{_nodes:[{default:"",get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSSOBinding",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSSOBinding",select:[{k:"",v:""},{k:"http-post",v:"POST"},{k:"http-redirect",v:"Redirect"},{k:"artifact-get",v:"Artifact GET"}],title:"samlIDPMetaDataOptionsSSOBinding",type:"select"},{default:"",get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSLOBinding",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSLOBinding",select:[{k:"",v:""},{k:"http-post",v:"POST"},{k:"http-redirect",v:"Redirect"},{k:"http-soap",v:"SOAP"}],title:"samlIDPMetaDataOptionsSLOBinding",type:"select"}],id:"samlIDPMetaDataOptionsBinding",title:"samlIDPMetaDataOptionsBinding",type:"simpleInputContainer"},{_nodes:[{default:"none",get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsEncryptionMode",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsEncryptionMode",select:[{k:"none",v:"None"},{k:"nameid",v:"Name ID"},{k:"assertion",v:"Assertion"}],title:"samlIDPMetaDataOptionsEncryptionMode",type:"select"},{default:1,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckTime",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckTime",title:"samlIDPMetaDataOptionsCheckTime",type:"bool"},{default:1,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckAudience",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckAudience",title:"samlIDPMetaDataOptionsCheckAudience",type:"bool"}],id:"samlIDPMetaDataOptionsSecurity",title:"samlIDPMetaDataOptionsSecurity",type:"simpleInputContainer"},{_nodes:[{default:"",get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsResolutionRule",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsResolutionRule",title:"samlIDPMetaDataOptionsResolutionRule",type:"longtext"},{default:"",get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsNameIDFormat",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsNameIDFormat",select:[{k:"",v:""},{k:"unspecified",v:"Unspecified"},{k:"email",v:"Email"},{k:"x509",v:"X509 certificate"},{k:"windows",v:"Windows"},{k:"kerberos",v:"Kerberos"},{k:"entity",v:"Entity"},{k:"persistent",v:"Persistent"},{k:"transient",v:"Transient"},{k:"encrypted",v:"Encrypted"}],title:"samlIDPMetaDataOptionsNameIDFormat",type:"select"},{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsForceAuthn",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsForceAuthn",title:"samlIDPMetaDataOptionsForceAuthn",type:"bool"},{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsIsPassive",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsIsPassive",title:"samlIDPMetaDataOptionsIsPassive",type:"bool"},{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsAllowProxiedAuthn",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsAllowProxiedAuthn",title:"samlIDPMetaDataOptionsAllowProxiedAuthn",type:"bool"},{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsAllowLoginFromIDP",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsAllowLoginFromIDP",title:"samlIDPMetaDataOptionsAllowLoginFromIDP",type:"bool"},{default:"",get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsRequestedAuthnContext",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsRequestedAuthnContext",select:[{k:"",v:""},{k:"kerberos",v:"Kerberos"},{k:"password-protected-transport",v:"Password protected transport"},{k:"password",v:"Password"},{k:"tls-client",v:"TLS client certificate"}],title:"samlIDPMetaDataOptionsRequestedAuthnContext",type:"select"},{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsRelayStateURL",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsRelayStateURL",title:"samlIDPMetaDataOptionsRelayStateURL",type:"bool"}],help:"authsaml.html#options",id:"samlIDPMetaDataOptions",title:"samlIDPMetaDataOptions",type:"simpleInputContainer"},{_nodes:[{get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsDisplayName",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsDisplayName",title:"samlIDPMetaDataOptionsDisplayName"},{get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsIcon",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsIcon",title:"samlIDPMetaDataOptionsIcon"},{get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSortNumber",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSortNumber",title:"samlIDPMetaDataOptionsSortNumber",type:"int"}],id:"samlIDPMetaDataOptionsDisplay",title:"samlIDPMetaDataOptionsDisplay",type:"simpleInputContainer"}];case"samlSPMetaDataNode":return[{get:tpl+"s/"+key+"/"+"samlSPMetaDataXML",id:tpl+"s/"+key+"/"+"samlSPMetaDataXML",title:"samlSPMetaDataXML",type:"file"},{cnodes:tpl+"s/"+key+"/"+"samlSPMetaDataExportedAttributes",default:[],help:"idpsaml.html#exported_attributes",id:tpl+"s/"+key+"/"+"samlSPMetaDataExportedAttributes",title:"samlSPMetaDataExportedAttributes",type:"samlAttributeContainer"},{_nodes:[{_nodes:[{default:"",get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsNameIDFormat",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsNameIDFormat",select:[{k:"",v:""},{k:"unspecified",v:"Unspecified"},{k:"email",v:"Email"},{k:"x509",v:"X509 certificate"},{k:"windows",v:"Windows"},{k:"kerberos",v:"Kerberos"},{k:"entity",v:"Entity"},{k:"persistent",v:"Persistent"},{k:"transient",v:"Transient"},{k:"encrypted",v:"Encrypted"}],title:"samlSPMetaDataOptionsNameIDFormat",type:"select"},{get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsNameIDSessionKey",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsNameIDSessionKey",title:"samlSPMetaDataOptionsNameIDSessionKey"},{default:0,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsOneTimeUse",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsOneTimeUse",title:"samlSPMetaDataOptionsOneTimeUse",type:"bool"},{default:72e3,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsSessionNotOnOrAfterTimeout",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsSessionNotOnOrAfterTimeout",title:"samlSPMetaDataOptionsSessionNotOnOrAfterTimeout",type:"int"},{default:72e3,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsNotOnOrAfterTimeout",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsNotOnOrAfterTimeout",title:"samlSPMetaDataOptionsNotOnOrAfterTimeout",type:"int"},{default:1,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsForceUTF8",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsForceUTF8",title:"samlSPMetaDataOptionsForceUTF8",type:"bool"}],id:"samlSPMetaDataOptionsAuthnResponse",title:"samlSPMetaDataOptionsAuthnResponse",type:"simpleInputContainer"},{_nodes:[{default:-1,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsSignSSOMessage",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsSignSSOMessage",title:"samlSPMetaDataOptionsSignSSOMessage",type:"trool"},{default:1,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsCheckSSOMessageSignature",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsCheckSSOMessageSignature",title:"samlSPMetaDataOptionsCheckSSOMessageSignature",type:"bool"},{default:-1,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsSignSLOMessage",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsSignSLOMessage",title:"samlSPMetaDataOptionsSignSLOMessage",type:"trool"},{default:1,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsCheckSLOMessageSignature",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsCheckSLOMessageSignature",title:"samlSPMetaDataOptionsCheckSLOMessageSignature",type:"bool"}],id:"samlSPMetaDataOptionsSignature",title:"samlSPMetaDataOptionsSignature",type:"simpleInputContainer"},{_nodes:[{default:"none",get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsEncryptionMode",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsEncryptionMode",select:[{k:"none",v:"None"},{k:"nameid",v:"Name ID"},{k:"assertion",v:"Assertion"}],title:"samlSPMetaDataOptionsEncryptionMode",type:"select"},{default:0,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsEnableIDPInitiatedURL",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsEnableIDPInitiatedURL",title:"samlSPMetaDataOptionsEnableIDPInitiatedURL",type:"bool"},{get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsRule",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsRule",title:"samlSPMetaDataOptionsRule"}],id:"samlSPMetaDataOptionsSecurity",title:"samlSPMetaDataOptionsSecurity",type:"simpleInputContainer"}],help:"idpsaml.html#options",id:"samlSPMetaDataOptions",title:"samlSPMetaDataOptions"}];case"virtualHost":return[{cnodes:tpl+"s/"+key+"/"+"locationRules",default:[{data:"deny",id:tpl+"s/"+key+"/"+"locationRules/default",re:"default",title:"default",type:"rule"}],help:"writingrulesand_headers.html#rules",id:tpl+"s/"+key+"/"+"locationRules",title:"locationRules",type:"ruleContainer"},{cnodes:tpl+"s/"+key+"/"+"exportedHeaders",help:"writingrulesand_headers.html#headers",id:tpl+"s/"+key+"/"+"exportedHeaders",title:"exportedHeaders",type:"keyTextContainer"},{cnodes:tpl+"s/"+key+"/"+"post",help:"formreplay.html",id:tpl+"s/"+key+"/"+"post",title:"post",type:"postContainer"},{_nodes:[{default:-1,get:tpl+"s/"+key+"/"+"vhostPort",id:tpl+"s/"+key+"/"+"vhostPort",title:"vhostPort",type:"int"},{default:-1,get:tpl+"s/"+key+"/"+"vhostHttps",id:tpl+"s/"+key+"/"+"vhostHttps",title:"vhostHttps",type:"trool"},{default:0,get:tpl+"s/"+key+"/"+"vhostMaintenance",id:tpl+"s/"+key+"/"+"vhostMaintenance",title:"vhostMaintenance",type:"bool"},{get:tpl+"s/"+key+"/"+"vhostAliases",id:tpl+"s/"+key+"/"+"vhostAliases",title:"vhostAliases"},{default:"Main",get:tpl+"s/"+key+"/"+"vhostType",id:tpl+"s/"+key+"/"+"vhostType",select:[{k:"AuthBasic",v:"AuthBasic"},{k:"CDA",v:"CDA"},{k:"DevOps",v:"DevOps"},{k:"DevOpsST",v:"DevOpsST"},{k:"Main",v:"Main"},{k:"OAuth2",v:"OAuth2"},{k:"SecureToken",v:"SecureToken"},{k:"ServiceToken",v:"ServiceToken"},{k:"Zimbra",v:"ZimbraPreAuth"}],title:"vhostType",type:"select"},{get:tpl+"s/"+key+"/"+"vhostAuthnLevel",id:tpl+"s/"+key+"/"+"vhostAuthnLevel",title:"vhostAuthnLevel",type:"int"}],help:"configvhost.html#options",id:"vhostOptions",title:"vhostOptions",type:"simpleInputContainer"}];default:return[]}}function setScopeVars(scope){scope.portal=scope.data[0]._nodes[0]._nodes[0];scope.getKey(scope.portal);scope.domain=scope.data[0]._nodes[4]._nodes[1];scope.getKey(scope.domain)} +function templates(tpl,key){var ind;var scalarTemplate=function(r){return{id:tpl+"s/"+ind++,title:r,get:tpl+"s/"+key+"/"+r}};switch(tpl){case"casAppMetaDataNode":return[{_nodes:[{get:tpl+"s/"+key+"/"+"casAppMetaDataOptionsService",id:tpl+"s/"+key+"/"+"casAppMetaDataOptionsService",title:"casAppMetaDataOptionsService"},{get:tpl+"s/"+key+"/"+"casAppMetaDataOptionsUserAttribute",id:tpl+"s/"+key+"/"+"casAppMetaDataOptionsUserAttribute",title:"casAppMetaDataOptionsUserAttribute"},{get:tpl+"s/"+key+"/"+"casAppMetaDataOptionsRule",id:tpl+"s/"+key+"/"+"casAppMetaDataOptionsRule",title:"casAppMetaDataOptionsRule"}],id:"casAppMetaDataOptions",title:"casAppMetaDataOptions",type:"simpleInputContainer"},{cnodes:tpl+"s/"+key+"/"+"casAppMetaDataExportedVars",default:[{data:"cn",id:tpl+"s/"+key+"/"+"casAppMetaDataExportedVars/cn",title:"cn",type:"keyText"},{data:"mail",id:tpl+"s/"+key+"/"+"casAppMetaDataExportedVars/mail",title:"mail",type:"keyText"},{data:"uid",id:tpl+"s/"+key+"/"+"casAppMetaDataExportedVars/uid",title:"uid",type:"keyText"}],id:tpl+"s/"+key+"/"+"casAppMetaDataExportedVars",title:"casAppMetaDataExportedVars",type:"keyTextContainer"}];case"casSrvMetaDataNode":return[{cnodes:tpl+"s/"+key+"/"+"casSrvMetaDataExportedVars",default:[{data:"cn",id:tpl+"s/"+key+"/"+"casSrvMetaDataExportedVars/cn",title:"cn",type:"keyText"},{data:"mail",id:tpl+"s/"+key+"/"+"casSrvMetaDataExportedVars/mail",title:"mail",type:"keyText"},{data:"uid",id:tpl+"s/"+key+"/"+"casSrvMetaDataExportedVars/uid",title:"uid",type:"keyText"}],id:tpl+"s/"+key+"/"+"casSrvMetaDataExportedVars",title:"casSrvMetaDataExportedVars",type:"keyTextContainer"},{cnodes:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsProxiedServices",id:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsProxiedServices",title:"casSrvMetaDataOptionsProxiedServices",type:"keyTextContainer"},{_nodes:[{get:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsUrl",id:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsUrl",title:"casSrvMetaDataOptionsUrl"},{default:0,get:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsRenew",id:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsRenew",title:"casSrvMetaDataOptionsRenew",type:"bool"},{default:0,get:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsGateway",id:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsGateway",title:"casSrvMetaDataOptionsGateway",type:"bool"}],id:"casSrvMetaDataOptions",title:"casSrvMetaDataOptions",type:"simpleInputContainer"},{_nodes:[{get:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsDisplayName",id:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsDisplayName",title:"casSrvMetaDataOptionsDisplayName"},{get:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsIcon",id:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsIcon",title:"casSrvMetaDataOptionsIcon"},{get:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsSortNumber",id:tpl+"s/"+key+"/"+"casSrvMetaDataOptionsSortNumber",title:"casSrvMetaDataOptionsSortNumber",type:"int"}],id:"casSrvMetaDataOptionsDisplay",title:"casSrvMetaDataOptionsDisplay",type:"simpleInputContainer"}];case"oidcOPMetaDataNode":return[{get:tpl+"s/"+key+"/"+"oidcOPMetaDataJSON",id:tpl+"s/"+key+"/"+"oidcOPMetaDataJSON",title:"oidcOPMetaDataJSON",type:"file"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataJWKS",id:tpl+"s/"+key+"/"+"oidcOPMetaDataJWKS",title:"oidcOPMetaDataJWKS",type:"file"},{cnodes:tpl+"s/"+key+"/"+"oidcOPMetaDataExportedVars",default:[{data:"name",id:tpl+"s/"+key+"/"+"oidcOPMetaDataExportedVars/cn",title:"cn",type:"keyText"},{data:"email",id:tpl+"s/"+key+"/"+"oidcOPMetaDataExportedVars/mail",title:"mail",type:"keyText"},{data:"family_name",id:tpl+"s/"+key+"/"+"oidcOPMetaDataExportedVars/sn",title:"sn",type:"keyText"},{data:"sub",id:tpl+"s/"+key+"/"+"oidcOPMetaDataExportedVars/uid",title:"uid",type:"keyText"}],id:tpl+"s/"+key+"/"+"oidcOPMetaDataExportedVars",title:"oidcOPMetaDataExportedVars",type:"keyTextContainer"},{_nodes:[{_nodes:[{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsConfigurationURI",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsConfigurationURI",title:"oidcOPMetaDataOptionsConfigurationURI"},{default:0,get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsJWKSTimeout",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsJWKSTimeout",title:"oidcOPMetaDataOptionsJWKSTimeout",type:"int"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsClientID",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsClientID",title:"oidcOPMetaDataOptionsClientID"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsClientSecret",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsClientSecret",title:"oidcOPMetaDataOptionsClientSecret",type:"password"},{default:0,get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsStoreIDToken",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsStoreIDToken",title:"oidcOPMetaDataOptionsStoreIDToken",type:"bool"}],id:"oidcOPMetaDataOptionsConfiguration",title:"oidcOPMetaDataOptionsConfiguration",type:"simpleInputContainer"},{_nodes:[{default:"openid profile",get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsScope",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsScope",title:"oidcOPMetaDataOptionsScope"},{default:"",get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsDisplay",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsDisplay",select:[{k:"",v:""},{k:"page",v:"page"},{k:"popup",v:"popup"},{k:"touch",v:"touch"},{k:"wap",v:"wap"}],title:"oidcOPMetaDataOptionsDisplay",type:"select"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsPrompt",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsPrompt",title:"oidcOPMetaDataOptionsPrompt"},{default:0,get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsMaxAge",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsMaxAge",title:"oidcOPMetaDataOptionsMaxAge",type:"int"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsUiLocales",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsUiLocales",title:"oidcOPMetaDataOptionsUiLocales"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsAcrValues",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsAcrValues",title:"oidcOPMetaDataOptionsAcrValues"},{default:"client_secret_post",get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsTokenEndpointAuthMethod",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsTokenEndpointAuthMethod",select:[{k:"client_secret_post",v:"client_secret_post"},{k:"client_secret_basic",v:"client_secret_basic"}],title:"oidcOPMetaDataOptionsTokenEndpointAuthMethod",type:"select"},{default:1,get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsCheckJWTSignature",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsCheckJWTSignature",title:"oidcOPMetaDataOptionsCheckJWTSignature",type:"bool"},{default:30,get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsIDTokenMaxAge",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsIDTokenMaxAge",title:"oidcOPMetaDataOptionsIDTokenMaxAge",type:"int"},{default:1,get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsUseNonce",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsUseNonce",title:"oidcOPMetaDataOptionsUseNonce",type:"bool"}],id:"oidcOPMetaDataOptionsProtocol",title:"oidcOPMetaDataOptionsProtocol",type:"simpleInputContainer"}],id:"oidcOPMetaDataOptions",title:"oidcOPMetaDataOptions"},{_nodes:[{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsDisplayName",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsDisplayName",title:"oidcOPMetaDataOptionsDisplayName"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsIcon",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsIcon",title:"oidcOPMetaDataOptionsIcon"},{get:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsSortNumber",id:tpl+"s/"+key+"/"+"oidcOPMetaDataOptionsSortNumber",title:"oidcOPMetaDataOptionsSortNumber",type:"int"}],id:"oidcOPMetaDataOptionsDisplayParams",title:"oidcOPMetaDataOptionsDisplayParams",type:"simpleInputContainer"}];case"oidcRPMetaDataNode":return[{cnodes:tpl+"s/"+key+"/"+"oidcRPMetaDataExportedVars",default:[{data:"mail",id:tpl+"s/"+key+"/"+"oidcRPMetaDataExportedVars/email",title:"email",type:"keyText"},{data:"sn",id:tpl+"s/"+key+"/"+"oidcRPMetaDataExportedVars/family_name",title:"family_name",type:"keyText"},{data:"cn",id:tpl+"s/"+key+"/"+"oidcRPMetaDataExportedVars/name",title:"name",type:"keyText"}],id:tpl+"s/"+key+"/"+"oidcRPMetaDataExportedVars",title:"oidcRPMetaDataExportedVars",type:"keyTextContainer"},{cnodes:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsExtraClaims",default:[],id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsExtraClaims",title:"oidcRPMetaDataOptionsExtraClaims",type:"keyTextContainer"},{_nodes:[{_nodes:[{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsClientID",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsClientID",title:"oidcRPMetaDataOptionsClientID"},{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsClientSecret",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsClientSecret",title:"oidcRPMetaDataOptionsClientSecret",type:"password"}],id:"oidcRPMetaDataOptionsAuthentication",title:"oidcRPMetaDataOptionsAuthentication",type:"simpleInputContainer"},{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsUserIDAttr",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsUserIDAttr",title:"oidcRPMetaDataOptionsUserIDAttr"},{default:"HS512",get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsIDTokenSignAlg",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsIDTokenSignAlg",select:[{k:"none",v:"None"},{k:"HS256",v:"HS256"},{k:"HS384",v:"HS384"},{k:"HS512",v:"HS512"},{k:"RS256",v:"RS256"},{k:"RS384",v:"RS384"},{k:"RS512",v:"RS512"}],title:"oidcRPMetaDataOptionsIDTokenSignAlg",type:"select"},{default:3600,get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsIDTokenExpiration",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsIDTokenExpiration",title:"oidcRPMetaDataOptionsIDTokenExpiration",type:"int"},{default:3600,get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsAccessTokenExpiration",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsAccessTokenExpiration",title:"oidcRPMetaDataOptionsAccessTokenExpiration",type:"int"},{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsRedirectUris",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsRedirectUris",title:"oidcRPMetaDataOptionsRedirectUris"},{default:0,get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsBypassConsent",help:"openidconnectclaims.html",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsBypassConsent",title:"oidcRPMetaDataOptionsBypassConsent",type:"bool"},{_nodes:[{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsPostLogoutRedirectUris",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsPostLogoutRedirectUris",title:"oidcRPMetaDataOptionsPostLogoutRedirectUris"},{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsLogoutUrl",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsLogoutUrl",title:"oidcRPMetaDataOptionsLogoutUrl"},{default:"front",get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsLogoutType",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsLogoutType",select:[{k:"front",v:"Front Channel"},{k:"back",v:"Back Channel"}],title:"oidcRPMetaDataOptionsLogoutType",type:"select"},{default:0,get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsLogoutSessionRequired",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsLogoutSessionRequired",title:"oidcRPMetaDataOptionsLogoutSessionRequired",type:"bool"}],id:"logout",title:"logout",type:"simpleInputContainer"},{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsRule",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsRule",title:"oidcRPMetaDataOptionsRule"}],id:"oidcRPMetaDataOptions",title:"oidcRPMetaDataOptions"},{_nodes:[{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsDisplayName",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsDisplayName",title:"oidcRPMetaDataOptionsDisplayName"},{get:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsIcon",id:tpl+"s/"+key+"/"+"oidcRPMetaDataOptionsIcon",title:"oidcRPMetaDataOptionsIcon"}],id:"oidcRPMetaDataOptionsDisplay",title:"oidcRPMetaDataOptionsDisplay",type:"simpleInputContainer"}];case"samlIDPMetaDataNode":return[{get:tpl+"s/"+key+"/"+"samlIDPMetaDataXML",id:tpl+"s/"+key+"/"+"samlIDPMetaDataXML",title:"samlIDPMetaDataXML",type:"file"},{cnodes:tpl+"s/"+key+"/"+"samlIDPMetaDataExportedAttributes",default:[],help:"authsaml.html#exported_attributes",id:tpl+"s/"+key+"/"+"samlIDPMetaDataExportedAttributes",title:"samlIDPMetaDataExportedAttributes",type:"samlAttributeContainer"},{_nodes:[{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsAdaptSessionUtime",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsAdaptSessionUtime",title:"samlIDPMetaDataOptionsAdaptSessionUtime",type:"bool"},{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsForceUTF8",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsForceUTF8",title:"samlIDPMetaDataOptionsForceUTF8",type:"bool"},{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsStoreSAMLToken",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsStoreSAMLToken",title:"samlIDPMetaDataOptionsStoreSAMLToken",type:"bool"},{get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsUserAttribute",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsUserAttribute",title:"samlIDPMetaDataOptionsUserAttribute"}],id:"samlIDPMetaDataOptionsSession",title:"samlIDPMetaDataOptionsSession",type:"simpleInputContainer"},{_nodes:[{default:-1,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSignSSOMessage",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSignSSOMessage",title:"samlIDPMetaDataOptionsSignSSOMessage",type:"trool"},{default:1,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckSSOMessageSignature",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckSSOMessageSignature",title:"samlIDPMetaDataOptionsCheckSSOMessageSignature",type:"bool"},{default:-1,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSignSLOMessage",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSignSLOMessage",title:"samlIDPMetaDataOptionsSignSLOMessage",type:"trool"},{default:1,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckSLOMessageSignature",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckSLOMessageSignature",title:"samlIDPMetaDataOptionsCheckSLOMessageSignature",type:"bool"}],id:"samlIDPMetaDataOptionsSignature",title:"samlIDPMetaDataOptionsSignature",type:"simpleInputContainer"},{_nodes:[{default:"",get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSSOBinding",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSSOBinding",select:[{k:"",v:""},{k:"http-post",v:"POST"},{k:"http-redirect",v:"Redirect"},{k:"artifact-get",v:"Artifact GET"}],title:"samlIDPMetaDataOptionsSSOBinding",type:"select"},{default:"",get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSLOBinding",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSLOBinding",select:[{k:"",v:""},{k:"http-post",v:"POST"},{k:"http-redirect",v:"Redirect"},{k:"http-soap",v:"SOAP"}],title:"samlIDPMetaDataOptionsSLOBinding",type:"select"}],id:"samlIDPMetaDataOptionsBinding",title:"samlIDPMetaDataOptionsBinding",type:"simpleInputContainer"},{_nodes:[{default:"none",get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsEncryptionMode",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsEncryptionMode",select:[{k:"none",v:"None"},{k:"nameid",v:"Name ID"},{k:"assertion",v:"Assertion"}],title:"samlIDPMetaDataOptionsEncryptionMode",type:"select"},{default:1,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckTime",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckTime",title:"samlIDPMetaDataOptionsCheckTime",type:"bool"},{default:1,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckAudience",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsCheckAudience",title:"samlIDPMetaDataOptionsCheckAudience",type:"bool"}],id:"samlIDPMetaDataOptionsSecurity",title:"samlIDPMetaDataOptionsSecurity",type:"simpleInputContainer"},{_nodes:[{default:"",get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsResolutionRule",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsResolutionRule",title:"samlIDPMetaDataOptionsResolutionRule",type:"longtext"},{default:"",get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsNameIDFormat",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsNameIDFormat",select:[{k:"",v:""},{k:"unspecified",v:"Unspecified"},{k:"email",v:"Email"},{k:"x509",v:"X509 certificate"},{k:"windows",v:"Windows"},{k:"kerberos",v:"Kerberos"},{k:"entity",v:"Entity"},{k:"persistent",v:"Persistent"},{k:"transient",v:"Transient"},{k:"encrypted",v:"Encrypted"}],title:"samlIDPMetaDataOptionsNameIDFormat",type:"select"},{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsForceAuthn",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsForceAuthn",title:"samlIDPMetaDataOptionsForceAuthn",type:"bool"},{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsIsPassive",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsIsPassive",title:"samlIDPMetaDataOptionsIsPassive",type:"bool"},{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsAllowProxiedAuthn",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsAllowProxiedAuthn",title:"samlIDPMetaDataOptionsAllowProxiedAuthn",type:"bool"},{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsAllowLoginFromIDP",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsAllowLoginFromIDP",title:"samlIDPMetaDataOptionsAllowLoginFromIDP",type:"bool"},{default:"",get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsRequestedAuthnContext",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsRequestedAuthnContext",select:[{k:"",v:""},{k:"kerberos",v:"Kerberos"},{k:"password-protected-transport",v:"Password protected transport"},{k:"password",v:"Password"},{k:"tls-client",v:"TLS client certificate"}],title:"samlIDPMetaDataOptionsRequestedAuthnContext",type:"select"},{default:0,get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsRelayStateURL",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsRelayStateURL",title:"samlIDPMetaDataOptionsRelayStateURL",type:"bool"}],help:"authsaml.html#options",id:"samlIDPMetaDataOptions",title:"samlIDPMetaDataOptions",type:"simpleInputContainer"},{_nodes:[{get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsDisplayName",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsDisplayName",title:"samlIDPMetaDataOptionsDisplayName"},{get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsIcon",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsIcon",title:"samlIDPMetaDataOptionsIcon"},{get:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSortNumber",id:tpl+"s/"+key+"/"+"samlIDPMetaDataOptionsSortNumber",title:"samlIDPMetaDataOptionsSortNumber",type:"int"}],id:"samlIDPMetaDataOptionsDisplay",title:"samlIDPMetaDataOptionsDisplay",type:"simpleInputContainer"}];case"samlSPMetaDataNode":return[{get:tpl+"s/"+key+"/"+"samlSPMetaDataXML",id:tpl+"s/"+key+"/"+"samlSPMetaDataXML",title:"samlSPMetaDataXML",type:"file"},{cnodes:tpl+"s/"+key+"/"+"samlSPMetaDataExportedAttributes",default:[],help:"idpsaml.html#exported_attributes",id:tpl+"s/"+key+"/"+"samlSPMetaDataExportedAttributes",title:"samlSPMetaDataExportedAttributes",type:"samlAttributeContainer"},{_nodes:[{_nodes:[{default:"",get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsNameIDFormat",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsNameIDFormat",select:[{k:"",v:""},{k:"unspecified",v:"Unspecified"},{k:"email",v:"Email"},{k:"x509",v:"X509 certificate"},{k:"windows",v:"Windows"},{k:"kerberos",v:"Kerberos"},{k:"entity",v:"Entity"},{k:"persistent",v:"Persistent"},{k:"transient",v:"Transient"},{k:"encrypted",v:"Encrypted"}],title:"samlSPMetaDataOptionsNameIDFormat",type:"select"},{get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsNameIDSessionKey",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsNameIDSessionKey",title:"samlSPMetaDataOptionsNameIDSessionKey"},{default:0,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsOneTimeUse",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsOneTimeUse",title:"samlSPMetaDataOptionsOneTimeUse",type:"bool"},{default:72e3,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsSessionNotOnOrAfterTimeout",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsSessionNotOnOrAfterTimeout",title:"samlSPMetaDataOptionsSessionNotOnOrAfterTimeout",type:"int"},{default:72e3,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsNotOnOrAfterTimeout",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsNotOnOrAfterTimeout",title:"samlSPMetaDataOptionsNotOnOrAfterTimeout",type:"int"},{default:1,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsForceUTF8",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsForceUTF8",title:"samlSPMetaDataOptionsForceUTF8",type:"bool"}],id:"samlSPMetaDataOptionsAuthnResponse",title:"samlSPMetaDataOptionsAuthnResponse",type:"simpleInputContainer"},{_nodes:[{default:-1,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsSignSSOMessage",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsSignSSOMessage",title:"samlSPMetaDataOptionsSignSSOMessage",type:"trool"},{default:1,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsCheckSSOMessageSignature",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsCheckSSOMessageSignature",title:"samlSPMetaDataOptionsCheckSSOMessageSignature",type:"bool"},{default:-1,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsSignSLOMessage",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsSignSLOMessage",title:"samlSPMetaDataOptionsSignSLOMessage",type:"trool"},{default:1,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsCheckSLOMessageSignature",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsCheckSLOMessageSignature",title:"samlSPMetaDataOptionsCheckSLOMessageSignature",type:"bool"}],id:"samlSPMetaDataOptionsSignature",title:"samlSPMetaDataOptionsSignature",type:"simpleInputContainer"},{_nodes:[{default:"none",get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsEncryptionMode",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsEncryptionMode",select:[{k:"none",v:"None"},{k:"nameid",v:"Name ID"},{k:"assertion",v:"Assertion"}],title:"samlSPMetaDataOptionsEncryptionMode",type:"select"},{default:0,get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsEnableIDPInitiatedURL",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsEnableIDPInitiatedURL",title:"samlSPMetaDataOptionsEnableIDPInitiatedURL",type:"bool"},{get:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsRule",id:tpl+"s/"+key+"/"+"samlSPMetaDataOptionsRule",title:"samlSPMetaDataOptionsRule"}],id:"samlSPMetaDataOptionsSecurity",title:"samlSPMetaDataOptionsSecurity",type:"simpleInputContainer"}],help:"idpsaml.html#options",id:"samlSPMetaDataOptions",title:"samlSPMetaDataOptions"}];case"virtualHost":return[{cnodes:tpl+"s/"+key+"/"+"locationRules",default:[{data:"deny",id:tpl+"s/"+key+"/"+"locationRules/default",re:"default",title:"default",type:"rule"}],help:"writingrulesand_headers.html#rules",id:tpl+"s/"+key+"/"+"locationRules",title:"locationRules",type:"ruleContainer"},{cnodes:tpl+"s/"+key+"/"+"exportedHeaders",help:"writingrulesand_headers.html#headers",id:tpl+"s/"+key+"/"+"exportedHeaders",title:"exportedHeaders",type:"keyTextContainer"},{cnodes:tpl+"s/"+key+"/"+"post",help:"formreplay.html",id:tpl+"s/"+key+"/"+"post",title:"post",type:"postContainer"},{_nodes:[{default:-1,get:tpl+"s/"+key+"/"+"vhostPort",id:tpl+"s/"+key+"/"+"vhostPort",title:"vhostPort",type:"int"},{default:-1,get:tpl+"s/"+key+"/"+"vhostHttps",id:tpl+"s/"+key+"/"+"vhostHttps",title:"vhostHttps",type:"trool"},{default:0,get:tpl+"s/"+key+"/"+"vhostMaintenance",id:tpl+"s/"+key+"/"+"vhostMaintenance",title:"vhostMaintenance",type:"bool"},{get:tpl+"s/"+key+"/"+"vhostAliases",id:tpl+"s/"+key+"/"+"vhostAliases",title:"vhostAliases"},{default:"Main",get:tpl+"s/"+key+"/"+"vhostType",id:tpl+"s/"+key+"/"+"vhostType",select:[{k:"AuthBasic",v:"AuthBasic"},{k:"CDA",v:"CDA"},{k:"DevOps",v:"DevOps"},{k:"DevOpsST",v:"DevOpsST"},{k:"Main",v:"Main"},{k:"OAuth2",v:"OAuth2"},{k:"SecureToken",v:"SecureToken"},{k:"ServiceToken",v:"ServiceToken"},{k:"Zimbra",v:"ZimbraPreAuth"}],title:"vhostType",type:"select"},{get:tpl+"s/"+key+"/"+"vhostAuthnLevel",id:tpl+"s/"+key+"/"+"vhostAuthnLevel",title:"vhostAuthnLevel",type:"int"}],help:"configvhost.html#options",id:"vhostOptions",title:"vhostOptions",type:"simpleInputContainer"}];default:return[]}}function setScopeVars(scope){scope.portal=scope.data[0]._nodes[0]._nodes[0];scope.getKey(scope.portal);scope.domain=scope.data[0]._nodes[4]._nodes[1];scope.getKey(scope.domain)} diff --git a/lemonldap-ng-manager/site/htdocs/static/languages/ar.json b/lemonldap-ng-manager/site/htdocs/static/languages/ar.json index 54259e8bf..1cf4ae2b5 100644 --- a/lemonldap-ng-manager/site/htdocs/static/languages/ar.json +++ b/lemonldap-ng-manager/site/htdocs/static/languages/ar.json @@ -116,6 +116,7 @@ "casAppMetaDataOptions":"خيارات", "casAppMetaDataOptionsService":"خدمة أل يو أر ل", "casAppMetaDataOptionsRule":"القاعدة", +"casAppMetaDataOptionsUserAttribute":"User attribute", "casAppName":"اسم التطبيق كاس", "casAttr":"تسجيل الدخول كاس", "casAttributes":"السمات المصدرة لي كاس", @@ -986,4 +987,4 @@ "samlRelayStateTimeout":"تناوب حالة مهلة الجلسة ", "samlUseQueryStringSpecific":"استخدام أسلوب query_string المعين", "samlOverrideIDPEntityID":"Override Entity ID when acting as IDP" -} \ No newline at end of file +} diff --git a/lemonldap-ng-manager/site/htdocs/static/languages/de.json b/lemonldap-ng-manager/site/htdocs/static/languages/de.json index 35aba11e3..ee101d65d 100644 --- a/lemonldap-ng-manager/site/htdocs/static/languages/de.json +++ b/lemonldap-ng-manager/site/htdocs/static/languages/de.json @@ -116,6 +116,7 @@ "casAppMetaDataOptions":"Optionen", "casAppMetaDataOptionsService":"Service URL", "casAppMetaDataOptionsRule":"Regel", +"casAppMetaDataOptionsUserAttribute":"User attribute", "casAppName":"CAS App Name", "casAttr":"CAS login", "casAttributes":"CAS exported attributes", @@ -986,4 +987,4 @@ "samlRelayStateTimeout":"RelayState session timeout", "samlUseQueryStringSpecific":"Use specific query_string method", "samlOverrideIDPEntityID":"Override Entity ID when acting as IDP" -} \ No newline at end of file +} diff --git a/lemonldap-ng-manager/site/htdocs/static/languages/en.json b/lemonldap-ng-manager/site/htdocs/static/languages/en.json index d60cca61d..e8e92d54e 100644 --- a/lemonldap-ng-manager/site/htdocs/static/languages/en.json +++ b/lemonldap-ng-manager/site/htdocs/static/languages/en.json @@ -116,6 +116,7 @@ "casAppMetaDataOptions":"Options", "casAppMetaDataOptionsService":"Service URL", "casAppMetaDataOptionsRule":"Rule", +"casAppMetaDataOptionsUserAttribute":"User attribute", "casAppName":"CAS App Name", "casAttr":"CAS login", "casAttributes":"CAS exported attributes", diff --git a/lemonldap-ng-manager/site/htdocs/static/languages/fr.json b/lemonldap-ng-manager/site/htdocs/static/languages/fr.json index 328a0fbd2..e014b6fb2 100644 --- a/lemonldap-ng-manager/site/htdocs/static/languages/fr.json +++ b/lemonldap-ng-manager/site/htdocs/static/languages/fr.json @@ -116,6 +116,7 @@ "casAppMetaDataOptions":"Options", "casAppMetaDataOptionsService":"URL du service", "casAppMetaDataOptionsRule":"Règle", +"casAppMetaDataOptionsUserAttribute":"Attribut de l'identifiant", "casAppName":"Nom de l'application CAS", "casAttr":"Identifiant CAS", "casAttributes":"Attributs CAS", diff --git a/lemonldap-ng-manager/site/htdocs/static/languages/it.json b/lemonldap-ng-manager/site/htdocs/static/languages/it.json index d16384017..5d1b93dad 100644 --- a/lemonldap-ng-manager/site/htdocs/static/languages/it.json +++ b/lemonldap-ng-manager/site/htdocs/static/languages/it.json @@ -116,6 +116,7 @@ "casAppMetaDataOptions":"Opzioni", "casAppMetaDataOptionsService":"URL del servizio", "casAppMetaDataOptionsRule":"Regola", +"casAppMetaDataOptionsUserAttribute":"User attribute", "casAppName":"Nome App CAS", "casAttr":"Login CAS", "casAttributes":"Attributi CAS esportati", @@ -986,4 +987,4 @@ "samlRelayStateTimeout":"Timeout di sessione di RelayState", "samlUseQueryStringSpecific":"Utilizza il metodo specifico query_string", "samlOverrideIDPEntityID":"Sostituisci l'ID entità quando agisce come IDP" -} \ No newline at end of file +} diff --git a/lemonldap-ng-manager/site/htdocs/static/languages/vi.json b/lemonldap-ng-manager/site/htdocs/static/languages/vi.json index 1a6474c84..6da70672a 100644 --- a/lemonldap-ng-manager/site/htdocs/static/languages/vi.json +++ b/lemonldap-ng-manager/site/htdocs/static/languages/vi.json @@ -116,6 +116,7 @@ "casAppMetaDataOptions":"Tùy chọn", "casAppMetaDataOptionsService":"Dịch vụ URL", "casAppMetaDataOptionsRule":"Quy tắc", +"casAppMetaDataOptionsUserAttribute":"User attribute", "casAppName":"Tên ứng dụng CAS", "casAttr":"Đăng nhập CAS ", "casAttributes":"Thuộc tính CAS đã được xuất", @@ -986,4 +987,4 @@ "samlRelayStateTimeout":"Thời gian hết hạn phiên RelayState ", "samlUseQueryStringSpecific":"Sử dụng phương pháp query_string cụ thể", "samlOverrideIDPEntityID":"Override Entity ID when acting as IDP" -} \ No newline at end of file +} diff --git a/lemonldap-ng-manager/site/htdocs/static/languages/zh.json b/lemonldap-ng-manager/site/htdocs/static/languages/zh.json index 2db4ff928..ebd0ac1b5 100644 --- a/lemonldap-ng-manager/site/htdocs/static/languages/zh.json +++ b/lemonldap-ng-manager/site/htdocs/static/languages/zh.json @@ -116,6 +116,7 @@ "casAppMetaDataOptions":"选项", "casAppMetaDataOptionsService":"服务 URL", "casAppMetaDataOptionsRule":"规则", +"casAppMetaDataOptionsUserAttribute":"User attribute", "casAppName":"CAS App 名称", "casAttr":"CAS 登录", "casAttributes":"CAS 声明的attributes", @@ -986,4 +987,4 @@ "samlRelayStateTimeout":"RelayState session timeout", "samlUseQueryStringSpecific":"Use specific query_string method", "samlOverrideIDPEntityID":"Override Entity ID when acting as IDP" -} \ No newline at end of file +} diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Issuer/CAS.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Issuer/CAS.pm index 4f5a19f03..96fa7bff7 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Issuer/CAS.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Issuer/CAS.pm @@ -458,8 +458,17 @@ sub validate { } # Get username - my $username = $localSession->data->{ $self->conf->{casAttr} - || $self->conf->{whatToTrace} }; + my $app = $casServiceSession->data->{_casApp}; + my $username_attribute = + ( $app + and $self->conf->{casAppMetaDataOptions}->{$app} + ->{casAppMetaDataOptionsUserAttribute} ) + ? $self->conf->{casAppMetaDataOptions}->{$app} + ->{casAppMetaDataOptionsUserAttribute} + : ( $self->conf->{casAttr} + || $self->conf->{whatToTrace} ); + + my $username = $localSession->data->{$username_attribute}; $self->logger->debug("Get username $username"); @@ -728,8 +737,16 @@ sub _validate2 { } # Get username - my $username = $localSession->data->{ $self->conf->{casAttr} - || $self->conf->{whatToTrace} }; + my $username_attribute = + ( $app + and $self->conf->{casAppMetaDataOptions}->{$app} + ->{casAppMetaDataOptionsUserAttribute} ) + ? $self->conf->{casAppMetaDataOptions}->{$app} + ->{casAppMetaDataOptionsUserAttribute} + : ( $self->conf->{casAttr} + || $self->conf->{whatToTrace} ); + + my $username = $localSession->data->{$username_attribute}; $self->logger->debug("Get username $username"); diff --git a/lemonldap-ng-portal/t/31-Auth-and-issuer-CAS-declared-app-userattr.t b/lemonldap-ng-portal/t/31-Auth-and-issuer-CAS-declared-app-userattr.t new file mode 100644 index 000000000..62e10bc8b --- /dev/null +++ b/lemonldap-ng-portal/t/31-Auth-and-issuer-CAS-declared-app-userattr.t @@ -0,0 +1,322 @@ +use lib 'inc'; +use Test::More; # skip_all => 'CAS is in rebuild'; +use strict; +use IO::String; +use LWP::UserAgent; +use LWP::Protocol::PSGI; +use MIME::Base64; + +BEGIN { + require 't/test-lib.pm'; +} + +my $debug = 'error'; +my ( $issuer, $sp, $res ); +my %handlerOR = ( issuer => [], sp => [] ); + +# Redefine LWP methods for tests +LWP::Protocol::PSGI->register( + sub { + my $req = Plack::Request->new(@_); + ok( $req->uri =~ m#http://auth.((?:id|s)p).com([^\?]*)(?:\?(.*))?$#, + 'SOAP request' ); + my $host = $1; + my $url = $2; + my $query = $3; + my $res; + my $client = ( $host eq 'idp' ? $issuer : $sp ); + if ( $req->method eq 'POST' ) { + my $s = $req->content; + ok( + $res = $client->_post( + $url, IO::String->new($s), + length => length($s), + query => $query, + type => 'application/xml', + ), + "Execute POST request to $url" + ); + } + else { + ok( + $res = $client->_get( + $url, + type => 'application/xml', + query => $query, + ), + "Execute request to $url" + ); + } + expectOK($res); + ok( getHeader( $res, 'Content-Type' ) =~ m#xml#, 'Content is XML' ) + or explain( $res->[1], 'Content-Type => application/xml' ); + count(3); + return $res; + } +); + +ok( $issuer = issuer(), 'Issuer portal' ); +$handlerOR{issuer} = \@Lemonldap::NG::Handler::Main::_onReload; +count(1); +switch ('sp'); +&Lemonldap::NG::Handler::Main::cfgNum( 0, 0 ); + +ok( $sp = sp(), 'SP portal' ); +count(1); +$handlerOR{sp} = \@Lemonldap::NG::Handler::Main::_onReload; + +# Simple SP access +ok( + $res = $sp->_get( + '/', accept => 'text/html', + ), + 'Unauth SP request' +); +count(1); +expectRedirection( $res, + 'http://auth.idp.com/cas/login?service=http%3A%2F%2Fauth.sp.com%2F' ); + +# Query IdP +switch ('issuer'); +ok( + $res = $issuer->_get( + '/cas/login', + query => 'service=http://auth.sp.com/', + accept => 'text/html' + ), + 'Query CAS server' +); +count(1); +expectOK($res); +my $pdata = 'lemonldappdata=' . expectCookie( $res, 'lemonldappdata' ); + +# Try to authenticate with an unauthorized user to IdP +my $body = $res->[2]->[0]; +$body =~ s/^.*?//s; +$body =~ s#.*$##s; +my %fields = + ( $body =~ /[2]->[0] ); +count(1); + +# Simple SP access +ok( + $res = $sp->_get( + '/', accept => 'text/html', + ), + 'Unauth SP request' +); +count(1); +expectRedirection( $res, + 'http://auth.idp.com/cas/login?service=http%3A%2F%2Fauth.sp.com%2F' ); + +# Query IdP +switch ('issuer'); +ok( + $res = $issuer->_get( + '/cas/login', + query => 'service=http://auth.sp.com/', + accept => 'text/html' + ), + 'Query CAS server' +); +count(1); +expectOK($res); +$pdata = 'lemonldappdata=' . expectCookie( $res, 'lemonldappdata' ); + +# Try to authenticate with an authorized to IdP +$body = $res->[2]->[0]; +$body =~ s/^.*?//s; +$body =~ s#.*$##s; +%fields = ( $body =~ /_get("/sessions/global/$spId"), 'Get UTF-8' ); +expectOK($res); +ok( $res = eval { JSON::from_json( $res->[2]->[0] ) }, ' GET JSON' ) + or print STDERR $@; +ok( $res->{cn} eq 'Frédéric Accents', 'UTF-8 values' ) + or explain( $res, 'cn => Frédéric Accents' ); +count(3); + +# Logout initiated by SP +ok( + $res = $sp->_get( + '/', + query => 'logout', + cookie => "lemonldap=$spId", + accept => 'text/html' + ), + 'Query SP for logout' +); +count(1); +expectOK($res); +ok( + $res->[2]->[0] =~ m#iframe src="http://auth.idp.com(/cas/logout)\?(.+?)"#s, + 'Found iframe' +); +count(1); + +# Query IdP with iframe src +my $url = $1; +$query = $2; +ok( getHeader( $res, 'Content-Security-Policy' ) =~ /child-src auth.idp.com/, + 'Frame is authorizated' ) + or + explain( $res->[1], 'Content-Security-Policy => ...child-src auth.idp.com' ); +count(1); + +switch ('issuer'); +ok( + $res = $issuer->_get( + $url, + query => $query, + accept => 'text/html', + cookie => "lemonldap=$idpId" + ), + 'Get iframe from IdP' +); +count(1); +expectRedirection( $res, 'http://auth.sp.com/?logout' ); +my $h = getHeader( $res, 'Content-Security-Policy' ); +ok( ( not $h or $h !~ /frame-ancestors/ ), ' Frame can be embedded' ) + or explain( $res->[1], + 'Content-Security-Policy does not contain a frame-ancestors' ); +count(1); + +# Verify that user has been disconnected +ok( $res = $issuer->_get( '/', cookie => "lemonldap=$idpId" ), 'Query IdP' ); +count(1); +expectReject($res); + +switch ('sp'); +ok( + $res = + $sp->_get( '/', accept => 'text/html', cookie => "lemonldap=$idpId" ), + 'Query IdP' +); +count(1); +expectRedirection( $res, + 'http://auth.idp.com/cas/login?service=http%3A%2F%2Fauth.sp.com%2F' ); + +clean_sessions(); +done_testing( count() ); + +sub switch { + my $type = shift; + @Lemonldap::NG::Handler::Main::_onReload = @{ + $handlerOR{$type}; + }; +} + +sub issuer { + return LLNG::Manager::Test->new( { + ini => { + logLevel => $debug, + templatesDir => 'site/htdocs/static', + domain => 'idp.com', + portal => 'http://auth.idp.com', + authentication => 'Demo', + userDB => 'Same', + issuerDBCASActivation => 1, + issuerDBCASRule => '$uid eq "french"', + casAttr => 'uid', + casAccessControlPolicy => 'error', + multiValuesSeparator => ';', + casAppMetaDataExportedVars => { + sp => { + cn => 'cn', + mail => 'mail', + uid => 'uid', + } + }, + casAppMetaDataOptions => { + sp => { + casAppMetaDataOptionsService => 'http://auth.sp.com', + casAppMetaDataOptionsUserAttribute => 'mail', + }, + sp2 => { + casAppMetaDataOptionsService => 'http://auth.sp2.com', + }, + }, + } + } + ); +} + +sub sp { + return LLNG::Manager::Test->new( { + ini => { + logLevel => $debug, + domain => 'sp.com', + portal => 'http://auth.sp.com', + authentication => 'CAS', + userDB => 'CAS', + restSessionServer => 1, + issuerDBCASActivation => 0, + multiValuesSeparator => ';', + exportedVars => { + cn => 'cn', + }, + casSrvMetaDataExportedVars => { + idp => { + cn => 'cn', + mail => 'mail', + uid => 'uid', + } + }, + casSrvMetaDataOptions => { + idp => { + casSrvMetaDataOptionsUrl => 'http://auth.idp.com/cas', + casSrvMetaDataOptionsGateway => 0, + } + }, + }, + } + ); +}