Merge branch 'rememberAuthChoice' into 'v2.0'
add RememberAuthChoice Plugin (references #2737) See merge request lemonldap-ng/lemonldap-ng!261
This commit is contained in:
commit
2dec1987c1
|
@ -31,3 +31,4 @@ Plugins
|
|||
restauthuserpwdbackend
|
||||
soapservices
|
||||
stayconnected
|
||||
rememberauthchoice
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
Remember auth choice plugin
|
||||
===========================
|
||||
|
||||
This plugin enables automatic authentication, based upon the last user authentication choice.
|
||||
|
||||
For this plugin to work, you have to configure a set of :doc:`authentication modules<authchoice>`.
|
||||
|
||||
If you have multiple SAML, OIDC or CAS issuers, you should define a dedicated choice for each of these issuers, and set the corresponding URL to ``/?idp=youridp``.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
Once enabled (section "General Parameters > Plugins"), you can set these parameters.
|
||||
|
||||
- **Parameters**:
|
||||
|
||||
- **Activation**: Rule to enable/disable this plugin
|
||||
- **Cookie name**: Name of the cookie storing the authentication choice
|
||||
- **Cookie lifetime**: Duration of the cookie (seconds) storing the authentication choice
|
||||
- **Check by default**: Is the checkbox "Remember my choice" checked by default?
|
||||
- **Timer before automatic authentication**: Timer before automatic authentication happens, if user has previously authorized the storage of authentication choice in a cookie
|
||||
|
||||
.. tip::
|
||||
|
||||
For instance, you may allow users from 192.168.0.0/16 private network to have the "Remember authentication choice" checkbox:
|
||||
|
||||
- Rule: ``$env->{REMOTE_ADDR} =~ /^192\.168\./``
|
|
@ -305,6 +305,7 @@ Name Description
|
|||
:doc:`REST services<restservices>` |new| REST server for :doc:`Proxy<authproxy>`
|
||||
:doc:`SOAP services<soapservices>` |deprecated| SOAP server for :doc:`Proxy<authproxy>`
|
||||
:doc:`Stay connected<stayconnected>` |new| Enable persistent connection on same browser
|
||||
:doc:`Remember auth choice<rememberauthchoice>` |new| Remember user last authentication choice
|
||||
Upgrade session |new| This plugin explains to an already authenticated user that a higher authentication level is required to access the URL instead of reject him
|
||||
==================================================================== ============================================================================================================================================
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ use constant DEFAULTCONFBACKENDOPTIONS => (
|
|||
);
|
||||
our $hashParameters = qr/^(?:(?:l(?:o(?:ca(?:lSessionStorageOption|tionRule)|goutService)|dapExportedVar|wp(?:Ssl)?Opt)|(?:(?:d(?:emo|bi)|webID)ExportedVa|exported(?:Heade|Va)|issuerDBGetParamete)r|f(?:indUser(?:Exclud|Search)ingAttribute|acebookExportedVar)|re(?:moteGlobalStorageOption|st2f(?:Verify|Init)Arg|loadUrl)|g(?:r(?:antSessionRule|oup)|lobalStorageOption)|n(?:otificationStorageOption|ginxCustomHandler)|macro)s|o(?:idc(?:S(?:ervice(?:DynamicRegistrationEx(?:portedVar|traClaim)s|MetaDataAuthnContext)|torageOptions)|RPMetaData(?:(?:Option(?:sExtraClaim)?|ExportedVar|ScopeRule|Macro)s|Node)|OPMetaData(?:(?:ExportedVar|Option)s|J(?:SON|WKS)|Node))|penIdExportedVars)|c(?:a(?:s(?:A(?:ppMetaData(?:(?:ExportedVar|Option|Macro)s|Node)|ttributes)|S(?:rvMetaData(?:(?:ExportedVar|Option)s|Node)|torageOptions))|ptchaOptions)|(?:ustom(?:Plugins|Add)Param|heckUserHiddenHeader|ombModule)s)|s(?:aml(?:S(?:PMetaData(?:(?:ExportedAttribute|Option|Macro)s|Node|XML)|torageOptions)|IDPMetaData(?:(?:ExportedAttribute|Option)s|Node|XML))|essionDataToRemember|laveExportedVars|fExtra)|a(?:(?:daptativeAuthenticationLevelR|ut(?:hChoiceMod|oSigninR))ules|pplicationList)|p(?:ersistentStorageOptions|o(?:rtalSkinRules|st))|v(?:hostOptions|irtualHost)|S(?:MTPTLSOpts|SLVarIf))$/;
|
||||
our $arrayParameters = qr/^mySessionAuthorizedRWKeys$/;
|
||||
our $boolKeys = qr/^(?:s(?:aml(?:IDP(?:MetaDataOptions(?:(?:Check(?:S[LS]OMessageSignatur|Audienc|Tim)|IsPassiv)e|A(?:llow(?:LoginFromIDP|ProxiedAuthn)|daptSessionUtime)|Force(?:Authn|UTF8)|StoreSAMLToken|RelayStateURL)|SSODescriptorWantAuthnRequestsSigned)|S(?:P(?:MetaDataOptions(?:(?:CheckS[LS]OMessageSignatur|OneTimeUs)e|EnableIDPInitiatedURL|ForceUTF8)|SSODescriptor(?:WantAssertion|AuthnRequest)sSigned)|erviceUseCertificateInResponse)|DiscoveryProtocol(?:Activation|IsPassive)|CommonDomainCookieActivation|UseQueryStringSpecific|MetadataForceUTF8)|t(?:ayConnectedBypassFG|orePassword)|f(?:RemovedUseNotif|OnlyUpgrade)|kip(?:Upgrade|Renew)Confirmation|oap(?:Session|Config)Server|laveDisplayLogo|howLanguages|slByAjax)|o(?:idc(?:RPMetaDataOptions(?:A(?:llow(?:(?:ClientCredentials|Password)Grant|Offline)|ccessToken(?:Claims|JWT))|Logout(?:SessionRequired|BypassConfirm)|Re(?:freshToken|quirePKCE)|IDTokenForceClaims|BypassConsent|Public)|ServiceAllow(?:(?:AuthorizationCode|Implicit|Hybrid)Flow|DynamicRegistration|OnlyDeclaredScopes)|OPMetaDataOptions(?:(?:CheckJWTSignatur|UseNonc)e|StoreIDToken))|ldNotifFormat)|c(?:a(?:sS(?:rvMetaDataOptions(?:Gateway|Renew)|trictMatching)|ptcha_(?:register|login|mail)_enabled)|heck(?:DevOps(?:D(?:isplayNormalizedHeaders|ownload)|CheckSessionAttributes)?|State|User|XSS)|o(?:ntextSwitching(?:Allowed2fModifications|StopWithLogout)|mpactConf|rsEnabled)|rowdsec|da)|p(?:ortal(?:Display(?:Re(?:freshMyRights|setPassword|gister)|CertificateResetByMail|GeneratePassword|PasswordPolicy)|E(?:rrorOn(?:ExpiredSession|MailNotFound)|nablePasswordDisplay)|(?:CheckLogin|Statu)s|OpenLinkInNewWindow|ForceAuthn|AntiFrame)|roxy(?:AuthServiceImpersonation|UseSoap))|l(?:dap(?:(?:G(?:roup(?:DecodeSearchedValu|Recursiv)|etUserBeforePasswordChang)|UsePasswordResetAttribut)e|(?:AllowResetExpired|Set)Password|ChangePasswordAsUser|PpolicyControl|ITDS)|oginHistoryEnabled)|n(?:o(?:tif(?:ication(?:Server(?:(?:POS|GE)T|DELETE)?|sExplorer)?|y(?:Deleted|Other))|AjaxHook)|ewLocationWarning)|i(?:ssuerDB(?:OpenID(?:Connect)?|SAML|CAS|Get)Activation|mpersonationSkipEmptyValues)|u(?:se(?:RedirectOn(?:Forbidden|Error)|SafeJail)|2fUserCanRemoveKey|pgradeSession)|re(?:st(?:(?:Password|Session|Config|Auth)Server|ExportSecretKeys)|freshSessions)|br(?:uteForceProtection(?:IncrementalTempo)?|owsersDontStorePassword)|d(?:is(?:ablePersistentStorage|playSessionId)|biDynamicHashEnabled)|to(?:tp2f(?:UserCanRemoveKey|EncryptSecret)|kenUseGlobalStorage)|(?:mai(?:lOnPasswordChang|ntenanc)|vhostMaintenanc)e|w(?:ebauthn2fUserCanRemoveKey|sdlServer)|g(?:roupsBeforeMacros|lobalLogoutTimer)|a(?:voidAssignment|ctiveTimer)|h(?:ideOldPassword|ttpOnly)|yubikey2fUserCanRemoveKey|krb(?:RemoveDomain|ByJs)|findUser)$/;
|
||||
our $boolKeys = qr/^(?:s(?:aml(?:IDP(?:MetaDataOptions(?:(?:Check(?:S[LS]OMessageSignatur|Audienc|Tim)|IsPassiv)e|A(?:llow(?:LoginFromIDP|ProxiedAuthn)|daptSessionUtime)|Force(?:Authn|UTF8)|StoreSAMLToken|RelayStateURL)|SSODescriptorWantAuthnRequestsSigned)|S(?:P(?:MetaDataOptions(?:(?:CheckS[LS]OMessageSignatur|OneTimeUs)e|EnableIDPInitiatedURL|ForceUTF8)|SSODescriptor(?:WantAssertion|AuthnRequest)sSigned)|erviceUseCertificateInResponse)|DiscoveryProtocol(?:Activation|IsPassive)|CommonDomainCookieActivation|UseQueryStringSpecific|MetadataForceUTF8)|t(?:ayConnectedBypassFG|orePassword)|f(?:RemovedUseNotif|OnlyUpgrade)|kip(?:Upgrade|Renew)Confirmation|oap(?:Session|Config)Server|laveDisplayLogo|howLanguages|slByAjax)|o(?:idc(?:RPMetaDataOptions(?:A(?:llow(?:(?:ClientCredentials|Password)Grant|Offline)|ccessToken(?:Claims|JWT))|Logout(?:SessionRequired|BypassConfirm)|Re(?:freshToken|quirePKCE)|IDTokenForceClaims|BypassConsent|Public)|ServiceAllow(?:(?:AuthorizationCode|Implicit|Hybrid)Flow|DynamicRegistration|OnlyDeclaredScopes)|OPMetaDataOptions(?:(?:CheckJWTSignatur|UseNonc)e|StoreIDToken))|ldNotifFormat)|c(?:a(?:sS(?:rvMetaDataOptions(?:Gateway|Renew)|trictMatching)|ptcha_(?:register|login|mail)_enabled)|heck(?:DevOps(?:D(?:isplayNormalizedHeaders|ownload)|CheckSessionAttributes)?|State|User|XSS)|o(?:ntextSwitching(?:Allowed2fModifications|StopWithLogout)|mpactConf|rsEnabled)|rowdsec|da)|p(?:ortal(?:Display(?:Re(?:freshMyRights|setPassword|gister)|CertificateResetByMail|GeneratePassword|PasswordPolicy)|E(?:rrorOn(?:ExpiredSession|MailNotFound)|nablePasswordDisplay)|(?:CheckLogin|Statu)s|OpenLinkInNewWindow|ForceAuthn|AntiFrame)|roxy(?:AuthServiceImpersonation|UseSoap))|l(?:dap(?:(?:G(?:roup(?:DecodeSearchedValu|Recursiv)|etUserBeforePasswordChang)|UsePasswordResetAttribut)e|(?:AllowResetExpired|Set)Password|ChangePasswordAsUser|PpolicyControl|ITDS)|oginHistoryEnabled)|n(?:o(?:tif(?:ication(?:Server(?:(?:POS|GE)T|DELETE)?|sExplorer)?|y(?:Deleted|Other))|AjaxHook)|ewLocationWarning)|re(?:st(?:(?:Password|Session|Config|Auth)Server|ExportSecretKeys)|memberDefaultChecked|freshSessions)|i(?:ssuerDB(?:OpenID(?:Connect)?|SAML|CAS|Get)Activation|mpersonationSkipEmptyValues)|u(?:se(?:RedirectOn(?:Forbidden|Error)|SafeJail)|2fUserCanRemoveKey|pgradeSession)|br(?:uteForceProtection(?:IncrementalTempo)?|owsersDontStorePassword)|d(?:is(?:ablePersistentStorage|playSessionId)|biDynamicHashEnabled)|to(?:tp2f(?:UserCanRemoveKey|EncryptSecret)|kenUseGlobalStorage)|(?:mai(?:lOnPasswordChang|ntenanc)|vhostMaintenanc)e|w(?:ebauthn2fUserCanRemoveKey|sdlServer)|g(?:roupsBeforeMacros|lobalLogoutTimer)|a(?:voidAssignment|ctiveTimer)|h(?:ideOldPassword|ttpOnly)|yubikey2fUserCanRemoveKey|krb(?:RemoveDomain|ByJs)|findUser)$/;
|
||||
|
||||
our @sessionTypes = ( 'remoteGlobal', 'global', 'localSession', 'persistent', 'saml', 'oidc', 'cas' );
|
||||
|
||||
|
|
|
@ -5,402 +5,386 @@ our $VERSION = '2.0.15';
|
|||
|
||||
sub defaultValues {
|
||||
return {
|
||||
'activeTimer' => 1,
|
||||
'ADPwdExpireWarning' => 0,
|
||||
'ADPwdMaxAge' => 0,
|
||||
'apacheAuthnLevel' => 3,
|
||||
'applicationList' => {
|
||||
'default' => {
|
||||
'catname' => 'Default category',
|
||||
'type' => 'category'
|
||||
}
|
||||
},
|
||||
'authChoiceParam' => 'lmAuth',
|
||||
'authentication' => 'Demo',
|
||||
'available2F' =>
|
||||
'UTOTP,TOTP,U2F,REST,Mail2F,Ext2F,WebAuthn,Yubikey,Radius',
|
||||
'available2FSelfRegistration' => 'TOTP,U2F,WebAuthn,Yubikey',
|
||||
'bruteForceProtectionLockTimes' => '15, 30, 60, 300, 600',
|
||||
'bruteForceProtectionMaxAge' => 300,
|
||||
'bruteForceProtectionMaxFailed' => 3,
|
||||
'bruteForceProtectionMaxLockTime' => 900,
|
||||
'bruteForceProtectionTempo' => 30,
|
||||
'captcha_mail_enabled' => 1,
|
||||
'captcha_register_enabled' => 1,
|
||||
'captcha_size' => 6,
|
||||
'casAccessControlPolicy' => 'none',
|
||||
'casAuthnLevel' => 1,
|
||||
'casTicketExpiration' => 0,
|
||||
'certificateResetByMailCeaAttribute' => 'description',
|
||||
'certificateResetByMailCertificateAttribute' =>
|
||||
'userCertificate;binary',
|
||||
'certificateResetByMailURL' =>
|
||||
'http://auth.example.com/certificateReset',
|
||||
'certificateResetByMailValidityDelay' => 0,
|
||||
'checkDevOpsCheckSessionAttributes' => 1,
|
||||
'checkDevOpsDisplayNormalizedHeaders' => 1,
|
||||
'checkDevOpsDownload' => 1,
|
||||
'checkTime' => 600,
|
||||
'checkUserDisplayComputedSession' => 1,
|
||||
'checkUserDisplayEmptyHeaders' => 0,
|
||||
'checkUserDisplayEmptyValues' => 0,
|
||||
'checkUserDisplayHiddenAttributes' => 0,
|
||||
'checkUserDisplayHistory' => 0,
|
||||
'checkUserDisplayNormalizedHeaders' => 0,
|
||||
'checkUserDisplayPersistentInfo' => 0,
|
||||
'checkUserHiddenAttributes' => '_loginHistory, _session_id, hGroups',
|
||||
'checkUserIdRule' => 1,
|
||||
'checkXSS' => 1,
|
||||
'confirmFormMethod' => 'post',
|
||||
'contextSwitchingIdRule' => 1,
|
||||
'contextSwitchingPrefix' => 'switching',
|
||||
'contextSwitchingRule' => 0,
|
||||
'contextSwitchingStopWithLogout' => 1,
|
||||
'cookieName' => 'lemonldap',
|
||||
'corsAllow_Credentials' => 'true',
|
||||
'corsAllow_Headers' => '*',
|
||||
'corsAllow_Methods' => 'POST,GET',
|
||||
'corsAllow_Origin' => '*',
|
||||
'corsEnabled' => 1,
|
||||
'corsExpose_Headers' => '*',
|
||||
'corsMax_Age' => '86400',
|
||||
'crowdsecAction' => 'reject',
|
||||
'cspConnect' => '\'self\'',
|
||||
'cspDefault' => '\'self\'',
|
||||
'cspFont' => '\'self\'',
|
||||
'cspFormAction' => '*',
|
||||
'cspFrameAncestors' => '',
|
||||
'cspImg' => '\'self\' data:',
|
||||
'cspScript' => '\'self\'',
|
||||
'cspStyle' => '\'self\'',
|
||||
'dbiAuthnLevel' => 2,
|
||||
'dbiExportedVars' => {},
|
||||
'decryptValueRule' => 0,
|
||||
'demoExportedVars' => {
|
||||
'cn' => 'cn',
|
||||
'mail' => 'mail',
|
||||
'uid' => 'uid'
|
||||
},
|
||||
'displaySessionId' => 1,
|
||||
'domain' => 'example.com',
|
||||
'exportedVars' => {
|
||||
'UA' => 'HTTP_USER_AGENT'
|
||||
},
|
||||
'ext2fActivation' => 0,
|
||||
'ext2fCodeActivation' => '\\d{6}',
|
||||
'facebookAuthnLevel' => 1,
|
||||
'facebookExportedVars' => {},
|
||||
'facebookUserField' => 'id',
|
||||
'failedLoginNumber' => 5,
|
||||
'findUserControl' => '^[*\\w]+$',
|
||||
'findUserWildcard' => '*',
|
||||
'formTimeout' => 120,
|
||||
'githubAuthnLevel' => 1,
|
||||
'githubScope' => 'user:email',
|
||||
'githubUserField' => 'login',
|
||||
'globalLogoutRule' => 0,
|
||||
'globalLogoutTimer' => 1,
|
||||
'globalStorage' => 'Apache::Session::File',
|
||||
'globalStorageOptions' => {
|
||||
'Directory' => '/var/lib/lemonldap-ng/sessions/',
|
||||
'generateModule' =>
|
||||
'Lemonldap::NG::Common::Apache::Session::Generate::SHA256',
|
||||
'LockDirectory' => '/var/lib/lemonldap-ng/sessions/lock/'
|
||||
},
|
||||
'gpgAuthnLevel' => 5,
|
||||
'gpgDb' => '',
|
||||
'grantSessionRules' => {},
|
||||
'groups' => {},
|
||||
'handlerInternalCache' => 15,
|
||||
'handlerServiceTokenTTL' => 30,
|
||||
'hiddenAttributes' => '_password, _2fDevices',
|
||||
'httpOnly' => 1,
|
||||
'https' => -1,
|
||||
'impersonationHiddenAttributes' => '_2fDevices, _loginHistory',
|
||||
'impersonationIdRule' => 1,
|
||||
'impersonationMergeSSOgroups' => 0,
|
||||
'impersonationPrefix' => 'real_',
|
||||
'impersonationRule' => 0,
|
||||
'impersonationSkipEmptyValues' => 1,
|
||||
'infoFormMethod' => 'get',
|
||||
'issuerDBCASPath' => '^/cas/',
|
||||
'issuerDBCASRule' => 1,
|
||||
'issuerDBGetParameters' => {},
|
||||
'issuerDBGetPath' => '^/get/',
|
||||
'issuerDBGetRule' => 1,
|
||||
'issuerDBOpenIDConnectPath' => '^/oauth2/',
|
||||
'issuerDBOpenIDConnectRule' => 1,
|
||||
'issuerDBOpenIDPath' => '^/openidserver/',
|
||||
'issuerDBOpenIDRule' => 1,
|
||||
'issuerDBSAMLPath' => '^/saml/',
|
||||
'issuerDBSAMLRule' => 1,
|
||||
'issuersTimeout' => 120,
|
||||
'jsRedirect' => 0,
|
||||
'krbAuthnLevel' => 3,
|
||||
'krbRemoveDomain' => 1,
|
||||
'ldapAuthnLevel' => 2,
|
||||
'ldapBase' => 'dc=example,dc=com',
|
||||
'ldapExportedVars' => {
|
||||
'cn' => 'cn',
|
||||
'mail' => 'mail',
|
||||
'uid' => 'uid'
|
||||
},
|
||||
'ldapGroupAttributeName' => 'member',
|
||||
'ldapGroupAttributeNameGroup' => 'dn',
|
||||
'ldapGroupAttributeNameSearch' => 'cn',
|
||||
'ldapGroupAttributeNameUser' => 'dn',
|
||||
'ldapGroupObjectClass' => 'groupOfNames',
|
||||
'ldapIOTimeout' => 10,
|
||||
'ldapPasswordResetAttribute' => 'pwdReset',
|
||||
'ldapPasswordResetAttributeValue' => 'TRUE',
|
||||
'ldapPwdEnc' => 'utf-8',
|
||||
'ldapSearchDeref' => 'find',
|
||||
'ldapServer' => 'ldap://localhost',
|
||||
'ldapTimeout' => 10,
|
||||
'ldapUsePasswordResetAttribute' => 1,
|
||||
'ldapVerify' => 'require',
|
||||
'ldapVersion' => 3,
|
||||
'linkedInAuthnLevel' => 1,
|
||||
'linkedInFields' => 'id,first-name,last-name,email-address',
|
||||
'linkedInScope' => 'r_liteprofile r_emailaddress',
|
||||
'linkedInUserField' => 'emailAddress',
|
||||
'localSessionStorage' => 'Cache::FileCache',
|
||||
'localSessionStorageOptions' => {
|
||||
'cache_depth' => 3,
|
||||
'cache_root' => '/var/cache/lemonldap-ng',
|
||||
'default_expires_in' => 600,
|
||||
'directory_umask' => '007',
|
||||
'namespace' => 'lemonldap-ng-sessions'
|
||||
},
|
||||
'locationRules' => {
|
||||
'default' => 'deny'
|
||||
},
|
||||
'logoutServices' => {},
|
||||
'macros' => {},
|
||||
'mail2fActivation' => 0,
|
||||
'mail2fCodeRegex' => '\\d{6}',
|
||||
'mailCharset' => 'utf-8',
|
||||
'mailFrom' => 'noreply@example.com',
|
||||
'mailSessionKey' => 'mail',
|
||||
'mailTimeout' => 0,
|
||||
'mailUrl' => 'http://auth.example.com/resetpwd',
|
||||
'managerDn' => '',
|
||||
'managerPassword' => '',
|
||||
'max2FDevices' => 10,
|
||||
'max2FDevicesNameLength' => 20,
|
||||
'multiValuesSeparator' => '; ',
|
||||
'mySessionAuthorizedRWKeys' =>
|
||||
[ '_appsListOrder', '_oidcConnectedRP', '_oidcConsents' ],
|
||||
'newLocationWarningLocationAttribute' => 'ipAddr',
|
||||
'newLocationWarningLocationDisplayAttribute' => '',
|
||||
'newLocationWarningMaxValues' => '0',
|
||||
'notificationDefaultCond' => '',
|
||||
'notificationServerPOST' => 1,
|
||||
'notificationServerSentAttributes' =>
|
||||
'uid reference date title subtitle text check',
|
||||
'notificationsMaxRetrieve' => 3,
|
||||
'notificationStorage' => 'File',
|
||||
'notificationStorageOptions' => {
|
||||
'dirName' => '/var/lib/lemonldap-ng/notifications'
|
||||
},
|
||||
'notificationWildcard' => 'allusers',
|
||||
'notifyDeleted' => 1,
|
||||
'nullAuthnLevel' => 0,
|
||||
'oidcAuthnLevel' => 1,
|
||||
'oidcRPCallbackGetParam' => 'openidconnectcallback',
|
||||
'oidcRPStateTimeout' => 600,
|
||||
'oidcServiceAccessTokenExpiration' => 3600,
|
||||
'oidcServiceAllowAuthorizationCodeFlow' => 1,
|
||||
'oidcServiceAuthorizationCodeExpiration' => 60,
|
||||
'oidcServiceIDTokenExpiration' => 3600,
|
||||
'oidcServiceMetaDataAuthnContext' => {
|
||||
'loa-1' => 1,
|
||||
'loa-2' => 2,
|
||||
'loa-3' => 3,
|
||||
'loa-4' => 4,
|
||||
'loa-5' => 5
|
||||
},
|
||||
'oidcServiceMetaDataAuthorizeURI' => 'authorize',
|
||||
'oidcServiceMetaDataBackChannelURI' => 'blogout',
|
||||
'oidcServiceMetaDataCheckSessionURI' => 'checksession.html',
|
||||
'oidcServiceMetaDataEndSessionURI' => 'logout',
|
||||
'oidcServiceMetaDataFrontChannelURI' => 'flogout',
|
||||
'oidcServiceMetaDataIntrospectionURI' => 'introspect',
|
||||
'oidcServiceMetaDataJWKSURI' => 'jwks',
|
||||
'oidcServiceMetaDataRegistrationURI' => 'register',
|
||||
'oidcServiceMetaDataTokenURI' => 'token',
|
||||
'oidcServiceMetaDataUserInfoURI' => 'userinfo',
|
||||
'oidcServiceOfflineSessionExpiration' => 2592000,
|
||||
'openIdAuthnLevel' => 1,
|
||||
'openIdExportedVars' => {},
|
||||
'openIdIDPList' => '0;',
|
||||
'openIdSPList' => '0;',
|
||||
'openIdSreg_email' => 'mail',
|
||||
'openIdSreg_fullname' => 'cn',
|
||||
'openIdSreg_nickname' => 'uid',
|
||||
'openIdSreg_timezone' => '_timezone',
|
||||
'pamAuthnLevel' => 2,
|
||||
'pamService' => 'login',
|
||||
'passwordDB' => 'Demo',
|
||||
'passwordPolicyActivation' => 1,
|
||||
'passwordPolicyMinDigit' => 0,
|
||||
'passwordPolicyMinLower' => 0,
|
||||
'passwordPolicyMinSize' => 0,
|
||||
'passwordPolicyMinSpeChar' => 0,
|
||||
'passwordPolicyMinUpper' => 0,
|
||||
'passwordPolicySpecialChar' => '__ALL__',
|
||||
'passwordResetAllowedRetries' => 3,
|
||||
'persistentSessionAttributes' =>
|
||||
'_loginHistory _2fDevices notification_',
|
||||
'port' => -1,
|
||||
'portal' => 'http://auth.example.com/',
|
||||
'portalAntiFrame' => 1,
|
||||
'portalCheckLogins' => 1,
|
||||
'portalDisplayAppslist' => 1,
|
||||
'portalDisplayChangePassword' => '$_auth =~ /^(LDAP|DBI|Demo)$/',
|
||||
'portalDisplayGeneratePassword' => 1,
|
||||
'portalDisplayLoginHistory' => 1,
|
||||
'portalDisplayLogout' => 1,
|
||||
'portalDisplayOidcConsents' =>
|
||||
'$_oidcConsents && $_oidcConsents =~ /\\w+/',
|
||||
'portalDisplayRefreshMyRights' => 1,
|
||||
'portalDisplayRegister' => 1,
|
||||
'portalErrorOnExpiredSession' => 1,
|
||||
'portalFavicon' => 'common/favicon.ico',
|
||||
'portalForceAuthnInterval' => 5,
|
||||
'portalMainLogo' => 'common/logos/logo_llng_400px.png',
|
||||
'portalPingInterval' => 60000,
|
||||
'portalRequireOldPassword' => 1,
|
||||
'portalSkin' => 'bootstrap',
|
||||
'portalUserAttr' => '_user',
|
||||
'proxyAuthnLevel' => 2,
|
||||
'proxyAuthServiceChoiceParam' => 'lmAuth',
|
||||
'radius2fActivation' => 0,
|
||||
'radius2fTimeout' => 20,
|
||||
'radiusAuthnLevel' => 3,
|
||||
'randomPasswordRegexp' => '[A-Z]{3}[a-z]{5}.\\d{2}',
|
||||
'redirectFormMethod' => 'get',
|
||||
'registerDB' => 'Null',
|
||||
'registerTimeout' => 0,
|
||||
'registerUrl' => 'http://auth.example.com/register',
|
||||
'reloadTimeout' => 5,
|
||||
'remoteGlobalStorage' => 'Lemonldap::NG::Common::Apache::Session::SOAP',
|
||||
'remoteGlobalStorageOptions' => {
|
||||
'ns' =>
|
||||
'http://auth.example.com/Lemonldap/NG/Common/PSGI/SOAPService',
|
||||
'proxy' => 'http://auth.example.com/sessions'
|
||||
},
|
||||
'requireToken' => 1,
|
||||
'rest2fActivation' => 0,
|
||||
'restAuthnLevel' => 2,
|
||||
'restClockTolerance' => 15,
|
||||
'sameSite' => '',
|
||||
'samlAttributeAuthorityDescriptorAttributeServiceSOAP' =>
|
||||
'urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/AA/SOAP;',
|
||||
'samlAuthnContextMapKerberos' => 4,
|
||||
'samlAuthnContextMapPassword' => 2,
|
||||
'samlAuthnContextMapPasswordProtectedTransport' => 3,
|
||||
'samlAuthnContextMapTLSClient' => 5,
|
||||
'samlEntityID' => '#PORTAL#/saml/metadata',
|
||||
'samlIDPSSODescriptorArtifactResolutionServiceArtifact' =>
|
||||
'1;0;urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/artifact',
|
||||
'samlIDPSSODescriptorSingleLogoutServiceHTTPPost' =>
|
||||
'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/singleLogout;#PORTAL#/saml/singleLogoutReturn',
|
||||
'samlIDPSSODescriptorSingleLogoutServiceHTTPRedirect' =>
|
||||
'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect;#PORTAL#/saml/singleLogout;#PORTAL#/saml/singleLogoutReturn',
|
||||
'samlIDPSSODescriptorSingleLogoutServiceSOAP' =>
|
||||
'urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/singleLogoutSOAP;',
|
||||
'samlIDPSSODescriptorSingleSignOnServiceHTTPArtifact' =>
|
||||
'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact;#PORTAL#/saml/singleSignOnArtifact;',
|
||||
'samlIDPSSODescriptorSingleSignOnServiceHTTPPost' =>
|
||||
'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/singleSignOn;',
|
||||
'samlIDPSSODescriptorSingleSignOnServiceHTTPRedirect' =>
|
||||
'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect;#PORTAL#/saml/singleSignOn;',
|
||||
'samlIDPSSODescriptorWantAuthnRequestsSigned' => 1,
|
||||
'samlMetadataForceUTF8' => 1,
|
||||
'samlNameIDFormatMapEmail' => 'mail',
|
||||
'samlNameIDFormatMapKerberos' => 'uid',
|
||||
'samlNameIDFormatMapWindows' => 'uid',
|
||||
'samlNameIDFormatMapX509' => 'mail',
|
||||
'samlOrganizationDisplayName' => 'Example',
|
||||
'samlOrganizationName' => 'Example',
|
||||
'samlOrganizationURL' => 'http://www.example.com',
|
||||
'samlOverrideIDPEntityID' => '',
|
||||
'samlRelayStateTimeout' => 600,
|
||||
'samlServiceSignatureMethod' => 'RSA_SHA256',
|
||||
'samlSPSSODescriptorArtifactResolutionServiceArtifact' =>
|
||||
'1;0;urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/artifact',
|
||||
'samlSPSSODescriptorAssertionConsumerServiceHTTPArtifact' =>
|
||||
'0;1;urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact;#PORTAL#/saml/proxySingleSignOnArtifact',
|
||||
'samlSPSSODescriptorAssertionConsumerServiceHTTPPost' =>
|
||||
'1;0;urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/proxySingleSignOnPost',
|
||||
'samlSPSSODescriptorAuthnRequestsSigned' => 1,
|
||||
'samlSPSSODescriptorSingleLogoutServiceHTTPPost' =>
|
||||
'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/proxySingleLogout;#PORTAL#/saml/proxySingleLogoutReturn',
|
||||
'samlSPSSODescriptorSingleLogoutServiceHTTPRedirect' =>
|
||||
'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect;#PORTAL#/saml/proxySingleLogout;#PORTAL#/saml/proxySingleLogoutReturn',
|
||||
'samlSPSSODescriptorSingleLogoutServiceSOAP' =>
|
||||
'urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/proxySingleLogoutSOAP;',
|
||||
'samlSPSSODescriptorWantAssertionsSigned' => 1,
|
||||
'scrollTop' => 400,
|
||||
'securedCookie' => 0,
|
||||
'sfEngine' => '::2F::Engines::Default',
|
||||
'sfManagerRule' => 1,
|
||||
'sfRemovedMsgRule' => 0,
|
||||
'sfRemovedNotifMsg' =>
|
||||
'_removedSF_ expired second factor(s) has/have been removed (_nameSF_)!',
|
||||
'sfRemovedNotifRef' => 'RemoveSF',
|
||||
'sfRemovedNotifTitle' => 'Second factor notification',
|
||||
'sfRequired' => 0,
|
||||
'showLanguages' => 1,
|
||||
'singleIP' => 0,
|
||||
'singleSession' => 0,
|
||||
'singleUserByIP' => 0,
|
||||
'slaveAuthnLevel' => 2,
|
||||
'slaveExportedVars' => {},
|
||||
'SMTPServer' => '',
|
||||
'SMTPTLS' => '',
|
||||
'soapProxyUrn' => 'urn:Lemonldap/NG/Common/PSGI/SOAPService',
|
||||
'SSLAuthnLevel' => 5,
|
||||
'SSLVar' => 'SSL_CLIENT_S_DN_Email',
|
||||
'SSLVarIf' => {},
|
||||
'stayConnected' => 0,
|
||||
'stayConnectedCookieName' => 'llngconnection',
|
||||
'stayConnectedTimeout' => 2592000,
|
||||
'successLoginNumber' => 5,
|
||||
'timeout' => 72000,
|
||||
'timeoutActivity' => 0,
|
||||
'timeoutActivityInterval' => 60,
|
||||
'totp2fActivation' => 0,
|
||||
'totp2fDigits' => 6,
|
||||
'totp2fInterval' => 30,
|
||||
'totp2fRange' => 1,
|
||||
'totp2fSelfRegistration' => 0,
|
||||
'totp2fUserCanRemoveKey' => 1,
|
||||
'twitterAuthnLevel' => 1,
|
||||
'twitterUserField' => 'screen_name',
|
||||
'u2fActivation' => 0,
|
||||
'u2fSelfRegistration' => 0,
|
||||
'u2fUserCanRemoveKey' => 1,
|
||||
'upgradeSession' => 1,
|
||||
'userControl' => '^[\\w\\.\\-@]+$',
|
||||
'userDB' => 'Same',
|
||||
'useRedirectOnError' => 1,
|
||||
'useSafeJail' => 1,
|
||||
'utotp2fActivation' => 0,
|
||||
'viewerHiddenKeys' => 'samlIDPMetaDataNodes, samlSPMetaDataNodes',
|
||||
'webauthn2fActivation' => 0,
|
||||
'webauthn2fSelfRegistration' => 0,
|
||||
'webauthn2fUserCanRemoveKey' => 1,
|
||||
'webauthn2fUserVerification' => 'preferred',
|
||||
'webIDAuthnLevel' => 1,
|
||||
'webIDExportedVars' => {},
|
||||
'whatToTrace' => 'uid',
|
||||
'yubikey2fActivation' => 0,
|
||||
'yubikey2fPublicIDSize' => 12,
|
||||
'yubikey2fSelfRegistration' => 0,
|
||||
'yubikey2fUserCanRemoveKey' => 1
|
||||
};
|
||||
'activeTimer' => 1,
|
||||
'ADPwdExpireWarning' => 0,
|
||||
'ADPwdMaxAge' => 0,
|
||||
'apacheAuthnLevel' => 3,
|
||||
'applicationList' => {
|
||||
'default' => {
|
||||
'catname' => 'Default category',
|
||||
'type' => 'category'
|
||||
}
|
||||
},
|
||||
'authChoiceParam' => 'lmAuth',
|
||||
'authentication' => 'Demo',
|
||||
'available2F' => 'UTOTP,TOTP,U2F,REST,Mail2F,Ext2F,WebAuthn,Yubikey,Radius',
|
||||
'available2FSelfRegistration' => 'TOTP,U2F,WebAuthn,Yubikey',
|
||||
'bruteForceProtectionLockTimes' => '15, 30, 60, 300, 600',
|
||||
'bruteForceProtectionMaxAge' => 300,
|
||||
'bruteForceProtectionMaxFailed' => 3,
|
||||
'bruteForceProtectionMaxLockTime' => 900,
|
||||
'bruteForceProtectionTempo' => 30,
|
||||
'captcha_mail_enabled' => 1,
|
||||
'captcha_register_enabled' => 1,
|
||||
'captcha_size' => 6,
|
||||
'casAccessControlPolicy' => 'none',
|
||||
'casAuthnLevel' => 1,
|
||||
'casTicketExpiration' => 0,
|
||||
'certificateResetByMailCeaAttribute' => 'description',
|
||||
'certificateResetByMailCertificateAttribute' => 'userCertificate;binary',
|
||||
'certificateResetByMailURL' => 'http://auth.example.com/certificateReset',
|
||||
'certificateResetByMailValidityDelay' => 0,
|
||||
'checkDevOpsCheckSessionAttributes' => 1,
|
||||
'checkDevOpsDisplayNormalizedHeaders' => 1,
|
||||
'checkDevOpsDownload' => 1,
|
||||
'checkTime' => 600,
|
||||
'checkUserDisplayComputedSession' => 1,
|
||||
'checkUserDisplayEmptyHeaders' => 0,
|
||||
'checkUserDisplayEmptyValues' => 0,
|
||||
'checkUserDisplayHiddenAttributes' => 0,
|
||||
'checkUserDisplayHistory' => 0,
|
||||
'checkUserDisplayNormalizedHeaders' => 0,
|
||||
'checkUserDisplayPersistentInfo' => 0,
|
||||
'checkUserHiddenAttributes' => '_loginHistory, _session_id, hGroups',
|
||||
'checkUserIdRule' => 1,
|
||||
'checkXSS' => 1,
|
||||
'confirmFormMethod' => 'post',
|
||||
'contextSwitchingIdRule' => 1,
|
||||
'contextSwitchingPrefix' => 'switching',
|
||||
'contextSwitchingRule' => 0,
|
||||
'contextSwitchingStopWithLogout' => 1,
|
||||
'cookieName' => 'lemonldap',
|
||||
'corsAllow_Credentials' => 'true',
|
||||
'corsAllow_Headers' => '*',
|
||||
'corsAllow_Methods' => 'POST,GET',
|
||||
'corsAllow_Origin' => '*',
|
||||
'corsEnabled' => 1,
|
||||
'corsExpose_Headers' => '*',
|
||||
'corsMax_Age' => '86400',
|
||||
'crowdsecAction' => 'reject',
|
||||
'cspConnect' => '\'self\'',
|
||||
'cspDefault' => '\'self\'',
|
||||
'cspFont' => '\'self\'',
|
||||
'cspFormAction' => '*',
|
||||
'cspFrameAncestors' => '',
|
||||
'cspImg' => '\'self\' data:',
|
||||
'cspScript' => '\'self\'',
|
||||
'cspStyle' => '\'self\'',
|
||||
'dbiAuthnLevel' => 2,
|
||||
'dbiExportedVars' => {},
|
||||
'decryptValueRule' => 0,
|
||||
'demoExportedVars' => {
|
||||
'cn' => 'cn',
|
||||
'mail' => 'mail',
|
||||
'uid' => 'uid'
|
||||
},
|
||||
'displaySessionId' => 1,
|
||||
'domain' => 'example.com',
|
||||
'exportedVars' => {
|
||||
'UA' => 'HTTP_USER_AGENT'
|
||||
},
|
||||
'ext2fActivation' => 0,
|
||||
'ext2fCodeActivation' => '\\d{6}',
|
||||
'facebookAuthnLevel' => 1,
|
||||
'facebookExportedVars' => {},
|
||||
'facebookUserField' => 'id',
|
||||
'failedLoginNumber' => 5,
|
||||
'findUserControl' => '^[*\\w]+$',
|
||||
'findUserWildcard' => '*',
|
||||
'formTimeout' => 120,
|
||||
'githubAuthnLevel' => 1,
|
||||
'githubScope' => 'user:email',
|
||||
'githubUserField' => 'login',
|
||||
'globalLogoutRule' => 0,
|
||||
'globalLogoutTimer' => 1,
|
||||
'globalStorage' => 'Apache::Session::File',
|
||||
'globalStorageOptions' => {
|
||||
'Directory' => '/var/lib/lemonldap-ng/sessions/',
|
||||
'generateModule' => 'Lemonldap::NG::Common::Apache::Session::Generate::SHA256',
|
||||
'LockDirectory' => '/var/lib/lemonldap-ng/sessions/lock/'
|
||||
},
|
||||
'gpgAuthnLevel' => 5,
|
||||
'gpgDb' => '',
|
||||
'grantSessionRules' => {},
|
||||
'groups' => {},
|
||||
'handlerInternalCache' => 15,
|
||||
'handlerServiceTokenTTL' => 30,
|
||||
'hiddenAttributes' => '_password, _2fDevices',
|
||||
'httpOnly' => 1,
|
||||
'https' => -1,
|
||||
'impersonationHiddenAttributes' => '_2fDevices, _loginHistory',
|
||||
'impersonationIdRule' => 1,
|
||||
'impersonationMergeSSOgroups' => 0,
|
||||
'impersonationPrefix' => 'real_',
|
||||
'impersonationRule' => 0,
|
||||
'impersonationSkipEmptyValues' => 1,
|
||||
'infoFormMethod' => 'get',
|
||||
'issuerDBCASPath' => '^/cas/',
|
||||
'issuerDBCASRule' => 1,
|
||||
'issuerDBGetParameters' => {},
|
||||
'issuerDBGetPath' => '^/get/',
|
||||
'issuerDBGetRule' => 1,
|
||||
'issuerDBOpenIDConnectPath' => '^/oauth2/',
|
||||
'issuerDBOpenIDConnectRule' => 1,
|
||||
'issuerDBOpenIDPath' => '^/openidserver/',
|
||||
'issuerDBOpenIDRule' => 1,
|
||||
'issuerDBSAMLPath' => '^/saml/',
|
||||
'issuerDBSAMLRule' => 1,
|
||||
'issuersTimeout' => 120,
|
||||
'jsRedirect' => 0,
|
||||
'krbAuthnLevel' => 3,
|
||||
'krbRemoveDomain' => 1,
|
||||
'ldapAuthnLevel' => 2,
|
||||
'ldapBase' => 'dc=example,dc=com',
|
||||
'ldapExportedVars' => {
|
||||
'cn' => 'cn',
|
||||
'mail' => 'mail',
|
||||
'uid' => 'uid'
|
||||
},
|
||||
'ldapGroupAttributeName' => 'member',
|
||||
'ldapGroupAttributeNameGroup' => 'dn',
|
||||
'ldapGroupAttributeNameSearch' => 'cn',
|
||||
'ldapGroupAttributeNameUser' => 'dn',
|
||||
'ldapGroupObjectClass' => 'groupOfNames',
|
||||
'ldapIOTimeout' => 10,
|
||||
'ldapPasswordResetAttribute' => 'pwdReset',
|
||||
'ldapPasswordResetAttributeValue' => 'TRUE',
|
||||
'ldapPwdEnc' => 'utf-8',
|
||||
'ldapSearchDeref' => 'find',
|
||||
'ldapServer' => 'ldap://localhost',
|
||||
'ldapTimeout' => 10,
|
||||
'ldapUsePasswordResetAttribute' => 1,
|
||||
'ldapVerify' => 'require',
|
||||
'ldapVersion' => 3,
|
||||
'linkedInAuthnLevel' => 1,
|
||||
'linkedInFields' => 'id,first-name,last-name,email-address',
|
||||
'linkedInScope' => 'r_liteprofile r_emailaddress',
|
||||
'linkedInUserField' => 'emailAddress',
|
||||
'localSessionStorage' => 'Cache::FileCache',
|
||||
'localSessionStorageOptions' => {
|
||||
'cache_depth' => 3,
|
||||
'cache_root' => '/var/cache/lemonldap-ng',
|
||||
'default_expires_in' => 600,
|
||||
'directory_umask' => '007',
|
||||
'namespace' => 'lemonldap-ng-sessions'
|
||||
},
|
||||
'locationRules' => {
|
||||
'default' => 'deny'
|
||||
},
|
||||
'logoutServices' => {},
|
||||
'macros' => {},
|
||||
'mail2fActivation' => 0,
|
||||
'mail2fCodeRegex' => '\\d{6}',
|
||||
'mailCharset' => 'utf-8',
|
||||
'mailFrom' => 'noreply@example.com',
|
||||
'mailSessionKey' => 'mail',
|
||||
'mailTimeout' => 0,
|
||||
'mailUrl' => 'http://auth.example.com/resetpwd',
|
||||
'managerDn' => '',
|
||||
'managerPassword' => '',
|
||||
'max2FDevices' => 10,
|
||||
'max2FDevicesNameLength' => 20,
|
||||
'multiValuesSeparator' => '; ',
|
||||
'mySessionAuthorizedRWKeys' => [
|
||||
'_appsListOrder',
|
||||
'_oidcConnectedRP',
|
||||
'_oidcConsents'
|
||||
],
|
||||
'newLocationWarningLocationAttribute' => 'ipAddr',
|
||||
'newLocationWarningLocationDisplayAttribute' => '',
|
||||
'newLocationWarningMaxValues' => '0',
|
||||
'notificationDefaultCond' => '',
|
||||
'notificationServerPOST' => 1,
|
||||
'notificationServerSentAttributes' => 'uid reference date title subtitle text check',
|
||||
'notificationsMaxRetrieve' => 3,
|
||||
'notificationStorage' => 'File',
|
||||
'notificationStorageOptions' => {
|
||||
'dirName' => '/var/lib/lemonldap-ng/notifications'
|
||||
},
|
||||
'notificationWildcard' => 'allusers',
|
||||
'notifyDeleted' => 1,
|
||||
'nullAuthnLevel' => 0,
|
||||
'oidcAuthnLevel' => 1,
|
||||
'oidcRPCallbackGetParam' => 'openidconnectcallback',
|
||||
'oidcRPStateTimeout' => 600,
|
||||
'oidcServiceAccessTokenExpiration' => 3600,
|
||||
'oidcServiceAllowAuthorizationCodeFlow' => 1,
|
||||
'oidcServiceAuthorizationCodeExpiration' => 60,
|
||||
'oidcServiceIDTokenExpiration' => 3600,
|
||||
'oidcServiceMetaDataAuthnContext' => {
|
||||
'loa-1' => 1,
|
||||
'loa-2' => 2,
|
||||
'loa-3' => 3,
|
||||
'loa-4' => 4,
|
||||
'loa-5' => 5
|
||||
},
|
||||
'oidcServiceMetaDataAuthorizeURI' => 'authorize',
|
||||
'oidcServiceMetaDataBackChannelURI' => 'blogout',
|
||||
'oidcServiceMetaDataCheckSessionURI' => 'checksession.html',
|
||||
'oidcServiceMetaDataEndSessionURI' => 'logout',
|
||||
'oidcServiceMetaDataFrontChannelURI' => 'flogout',
|
||||
'oidcServiceMetaDataIntrospectionURI' => 'introspect',
|
||||
'oidcServiceMetaDataJWKSURI' => 'jwks',
|
||||
'oidcServiceMetaDataRegistrationURI' => 'register',
|
||||
'oidcServiceMetaDataTokenURI' => 'token',
|
||||
'oidcServiceMetaDataUserInfoURI' => 'userinfo',
|
||||
'oidcServiceOfflineSessionExpiration' => 2592000,
|
||||
'openIdAuthnLevel' => 1,
|
||||
'openIdExportedVars' => {},
|
||||
'openIdIDPList' => '0;',
|
||||
'openIdSPList' => '0;',
|
||||
'openIdSreg_email' => 'mail',
|
||||
'openIdSreg_fullname' => 'cn',
|
||||
'openIdSreg_nickname' => 'uid',
|
||||
'openIdSreg_timezone' => '_timezone',
|
||||
'pamAuthnLevel' => 2,
|
||||
'pamService' => 'login',
|
||||
'passwordDB' => 'Demo',
|
||||
'passwordPolicyActivation' => 1,
|
||||
'passwordPolicyMinDigit' => 0,
|
||||
'passwordPolicyMinLower' => 0,
|
||||
'passwordPolicyMinSize' => 0,
|
||||
'passwordPolicyMinSpeChar' => 0,
|
||||
'passwordPolicyMinUpper' => 0,
|
||||
'passwordPolicySpecialChar' => '__ALL__',
|
||||
'passwordResetAllowedRetries' => 3,
|
||||
'persistentSessionAttributes' => '_loginHistory _2fDevices notification_',
|
||||
'port' => -1,
|
||||
'portal' => 'http://auth.example.com/',
|
||||
'portalAntiFrame' => 1,
|
||||
'portalCheckLogins' => 1,
|
||||
'portalDisplayAppslist' => 1,
|
||||
'portalDisplayChangePassword' => '$_auth =~ /^(LDAP|DBI|Demo)$/',
|
||||
'portalDisplayGeneratePassword' => 1,
|
||||
'portalDisplayLoginHistory' => 1,
|
||||
'portalDisplayLogout' => 1,
|
||||
'portalDisplayOidcConsents' => '$_oidcConsents && $_oidcConsents =~ /\\w+/',
|
||||
'portalDisplayRefreshMyRights' => 1,
|
||||
'portalDisplayRegister' => 1,
|
||||
'portalErrorOnExpiredSession' => 1,
|
||||
'portalFavicon' => 'common/favicon.ico',
|
||||
'portalForceAuthnInterval' => 5,
|
||||
'portalMainLogo' => 'common/logos/logo_llng_400px.png',
|
||||
'portalPingInterval' => 60000,
|
||||
'portalRequireOldPassword' => 1,
|
||||
'portalSkin' => 'bootstrap',
|
||||
'portalUserAttr' => '_user',
|
||||
'proxyAuthnLevel' => 2,
|
||||
'proxyAuthServiceChoiceParam' => 'lmAuth',
|
||||
'radius2fActivation' => 0,
|
||||
'radius2fTimeout' => 20,
|
||||
'radiusAuthnLevel' => 3,
|
||||
'randomPasswordRegexp' => '[A-Z]{3}[a-z]{5}.\\d{2}',
|
||||
'redirectFormMethod' => 'get',
|
||||
'registerDB' => 'Null',
|
||||
'registerTimeout' => 0,
|
||||
'registerUrl' => 'http://auth.example.com/register',
|
||||
'reloadTimeout' => 5,
|
||||
'rememberAuthChoiceRule' => 0,
|
||||
'rememberCookieName' => 'llngrememberauthchoice',
|
||||
'rememberCookieTimeout' => 31536000,
|
||||
'rememberTimer' => 5,
|
||||
'remoteGlobalStorage' => 'Lemonldap::NG::Common::Apache::Session::SOAP',
|
||||
'remoteGlobalStorageOptions' => {
|
||||
'ns' => 'http://auth.example.com/Lemonldap/NG/Common/PSGI/SOAPService',
|
||||
'proxy' => 'http://auth.example.com/sessions'
|
||||
},
|
||||
'requireToken' => 1,
|
||||
'rest2fActivation' => 0,
|
||||
'restAuthnLevel' => 2,
|
||||
'restClockTolerance' => 15,
|
||||
'sameSite' => '',
|
||||
'samlAttributeAuthorityDescriptorAttributeServiceSOAP' => 'urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/AA/SOAP;',
|
||||
'samlAuthnContextMapKerberos' => 4,
|
||||
'samlAuthnContextMapPassword' => 2,
|
||||
'samlAuthnContextMapPasswordProtectedTransport' => 3,
|
||||
'samlAuthnContextMapTLSClient' => 5,
|
||||
'samlEntityID' => '#PORTAL#/saml/metadata',
|
||||
'samlIDPSSODescriptorArtifactResolutionServiceArtifact' => '1;0;urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/artifact',
|
||||
'samlIDPSSODescriptorSingleLogoutServiceHTTPPost' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/singleLogout;#PORTAL#/saml/singleLogoutReturn',
|
||||
'samlIDPSSODescriptorSingleLogoutServiceHTTPRedirect' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect;#PORTAL#/saml/singleLogout;#PORTAL#/saml/singleLogoutReturn',
|
||||
'samlIDPSSODescriptorSingleLogoutServiceSOAP' => 'urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/singleLogoutSOAP;',
|
||||
'samlIDPSSODescriptorSingleSignOnServiceHTTPArtifact' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact;#PORTAL#/saml/singleSignOnArtifact;',
|
||||
'samlIDPSSODescriptorSingleSignOnServiceHTTPPost' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/singleSignOn;',
|
||||
'samlIDPSSODescriptorSingleSignOnServiceHTTPRedirect' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect;#PORTAL#/saml/singleSignOn;',
|
||||
'samlIDPSSODescriptorWantAuthnRequestsSigned' => 1,
|
||||
'samlMetadataForceUTF8' => 1,
|
||||
'samlNameIDFormatMapEmail' => 'mail',
|
||||
'samlNameIDFormatMapKerberos' => 'uid',
|
||||
'samlNameIDFormatMapWindows' => 'uid',
|
||||
'samlNameIDFormatMapX509' => 'mail',
|
||||
'samlOrganizationDisplayName' => 'Example',
|
||||
'samlOrganizationName' => 'Example',
|
||||
'samlOrganizationURL' => 'http://www.example.com',
|
||||
'samlOverrideIDPEntityID' => '',
|
||||
'samlRelayStateTimeout' => 600,
|
||||
'samlServiceSignatureMethod' => 'RSA_SHA256',
|
||||
'samlSPSSODescriptorArtifactResolutionServiceArtifact' => '1;0;urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/artifact',
|
||||
'samlSPSSODescriptorAssertionConsumerServiceHTTPArtifact' => '0;1;urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact;#PORTAL#/saml/proxySingleSignOnArtifact',
|
||||
'samlSPSSODescriptorAssertionConsumerServiceHTTPPost' => '1;0;urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/proxySingleSignOnPost',
|
||||
'samlSPSSODescriptorAuthnRequestsSigned' => 1,
|
||||
'samlSPSSODescriptorSingleLogoutServiceHTTPPost' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST;#PORTAL#/saml/proxySingleLogout;#PORTAL#/saml/proxySingleLogoutReturn',
|
||||
'samlSPSSODescriptorSingleLogoutServiceHTTPRedirect' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect;#PORTAL#/saml/proxySingleLogout;#PORTAL#/saml/proxySingleLogoutReturn',
|
||||
'samlSPSSODescriptorSingleLogoutServiceSOAP' => 'urn:oasis:names:tc:SAML:2.0:bindings:SOAP;#PORTAL#/saml/proxySingleLogoutSOAP;',
|
||||
'samlSPSSODescriptorWantAssertionsSigned' => 1,
|
||||
'scrollTop' => 400,
|
||||
'securedCookie' => 0,
|
||||
'sfEngine' => '::2F::Engines::Default',
|
||||
'sfManagerRule' => 1,
|
||||
'sfRemovedMsgRule' => 0,
|
||||
'sfRemovedNotifMsg' => '_removedSF_ expired second factor(s) has/have been removed (_nameSF_)!',
|
||||
'sfRemovedNotifRef' => 'RemoveSF',
|
||||
'sfRemovedNotifTitle' => 'Second factor notification',
|
||||
'sfRequired' => 0,
|
||||
'showLanguages' => 1,
|
||||
'singleIP' => 0,
|
||||
'singleSession' => 0,
|
||||
'singleUserByIP' => 0,
|
||||
'slaveAuthnLevel' => 2,
|
||||
'slaveExportedVars' => {},
|
||||
'SMTPServer' => '',
|
||||
'SMTPTLS' => '',
|
||||
'soapProxyUrn' => 'urn:Lemonldap/NG/Common/PSGI/SOAPService',
|
||||
'SSLAuthnLevel' => 5,
|
||||
'SSLVar' => 'SSL_CLIENT_S_DN_Email',
|
||||
'SSLVarIf' => {},
|
||||
'stayConnected' => 0,
|
||||
'stayConnectedCookieName' => 'llngconnection',
|
||||
'stayConnectedTimeout' => 2592000,
|
||||
'successLoginNumber' => 5,
|
||||
'timeout' => 72000,
|
||||
'timeoutActivity' => 0,
|
||||
'timeoutActivityInterval' => 60,
|
||||
'totp2fActivation' => 0,
|
||||
'totp2fDigits' => 6,
|
||||
'totp2fInterval' => 30,
|
||||
'totp2fRange' => 1,
|
||||
'totp2fSelfRegistration' => 0,
|
||||
'totp2fUserCanRemoveKey' => 1,
|
||||
'twitterAuthnLevel' => 1,
|
||||
'twitterUserField' => 'screen_name',
|
||||
'u2fActivation' => 0,
|
||||
'u2fSelfRegistration' => 0,
|
||||
'u2fUserCanRemoveKey' => 1,
|
||||
'upgradeSession' => 1,
|
||||
'userControl' => '^[\\w\\.\\-@]+$',
|
||||
'userDB' => 'Same',
|
||||
'useRedirectOnError' => 1,
|
||||
'useSafeJail' => 1,
|
||||
'utotp2fActivation' => 0,
|
||||
'viewerHiddenKeys' => 'samlIDPMetaDataNodes, samlSPMetaDataNodes',
|
||||
'webauthn2fActivation' => 0,
|
||||
'webauthn2fSelfRegistration' => 0,
|
||||
'webauthn2fUserCanRemoveKey' => 1,
|
||||
'webauthn2fUserVerification' => 'preferred',
|
||||
'webIDAuthnLevel' => 1,
|
||||
'webIDExportedVars' => {},
|
||||
'whatToTrace' => 'uid',
|
||||
'yubikey2fActivation' => 0,
|
||||
'yubikey2fPublicIDSize' => 12,
|
||||
'yubikey2fSelfRegistration' => 0,
|
||||
'yubikey2fUserCanRemoveKey' => 1
|
||||
};
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
@ -8,115 +8,115 @@ our $VERSION = '2.0.15';
|
|||
|
||||
sub portalConsts {
|
||||
return {
|
||||
'-1' => 'PE_DONE',
|
||||
'-2' => 'PE_REDIRECT',
|
||||
'-3' => 'PE_INFO',
|
||||
'-4' => 'PE_SENDRESPONSE',
|
||||
'-5' => 'PE_IDPCHOICE',
|
||||
'0' => 'PE_OK',
|
||||
'1' => 'PE_SESSIONEXPIRED',
|
||||
'10' => 'PE_BADCERTIFICATE',
|
||||
'100' => 'PE_PP_NOT_ALLOWED_CHARACTER',
|
||||
'101' => 'PE_PP_NOT_ALLOWED_CHARACTERS',
|
||||
'102' => 'PE_UPGRADESESSION',
|
||||
'103' => 'PE_NO_SECOND_FACTORS',
|
||||
'104' => 'PE_BAD_DEVOPS_FILE',
|
||||
'105' => 'PE_FILENOTFOUND',
|
||||
'106' => 'PE_OIDC_AUTH_ERROR',
|
||||
'2' => 'PE_FORMEMPTY',
|
||||
'20' => 'PE_NO_PASSWORD_BE',
|
||||
'21' => 'PE_PP_ACCOUNT_LOCKED',
|
||||
'22' => 'PE_PP_PASSWORD_EXPIRED',
|
||||
'23' => 'PE_CERTIFICATEREQUIRED',
|
||||
'24' => 'PE_ERROR',
|
||||
'25' => 'PE_PP_CHANGE_AFTER_RESET',
|
||||
'26' => 'PE_PP_PASSWORD_MOD_NOT_ALLOWED',
|
||||
'27' => 'PE_PP_MUST_SUPPLY_OLD_PASSWORD',
|
||||
'28' => 'PE_PP_INSUFFICIENT_PASSWORD_QUALITY',
|
||||
'29' => 'PE_PP_PASSWORD_TOO_SHORT',
|
||||
'3' => 'PE_WRONGMANAGERACCOUNT',
|
||||
'30' => 'PE_PP_PASSWORD_TOO_YOUNG',
|
||||
'31' => 'PE_PP_PASSWORD_IN_HISTORY',
|
||||
'32' => 'PE_PP_GRACE',
|
||||
'33' => 'PE_PP_EXP_WARNING',
|
||||
'34' => 'PE_PASSWORD_MISMATCH',
|
||||
'35' => 'PE_PASSWORD_OK',
|
||||
'36' => 'PE_NOTIFICATION',
|
||||
'37' => 'PE_BADURL',
|
||||
'38' => 'PE_NOSCHEME',
|
||||
'39' => 'PE_BADOLDPASSWORD',
|
||||
'4' => 'PE_USERNOTFOUND',
|
||||
'40' => 'PE_MALFORMEDUSER',
|
||||
'41' => 'PE_SESSIONNOTGRANTED',
|
||||
'42' => 'PE_CONFIRM',
|
||||
'43' => 'PE_MAILFORMEMPTY',
|
||||
'44' => 'PE_BADMAILTOKEN',
|
||||
'45' => 'PE_MAILERROR',
|
||||
'46' => 'PE_MAILOK',
|
||||
'47' => 'PE_LOGOUT_OK',
|
||||
'48' => 'PE_SAML_ERROR',
|
||||
'49' => 'PE_SAML_LOAD_SERVICE_ERROR',
|
||||
'5' => 'PE_BADCREDENTIALS',
|
||||
'50' => 'PE_SAML_LOAD_IDP_ERROR',
|
||||
'51' => 'PE_SAML_SSO_ERROR',
|
||||
'52' => 'PE_SAML_UNKNOWN_ENTITY',
|
||||
'53' => 'PE_SAML_DESTINATION_ERROR',
|
||||
'54' => 'PE_SAML_CONDITIONS_ERROR',
|
||||
'55' => 'PE_SAML_IDPSSOINITIATED_NOTALLOWED',
|
||||
'56' => 'PE_SAML_SLO_ERROR',
|
||||
'57' => 'PE_SAML_SIGNATURE_ERROR',
|
||||
'58' => 'PE_SAML_ART_ERROR',
|
||||
'59' => 'PE_SAML_SESSION_ERROR',
|
||||
'6' => 'PE_LDAPCONNECTFAILED',
|
||||
'60' => 'PE_SAML_LOAD_SP_ERROR',
|
||||
'61' => 'PE_SAML_ATTR_ERROR',
|
||||
'62' => 'PE_OPENID_EMPTY',
|
||||
'63' => 'PE_OPENID_BADID',
|
||||
'64' => 'PE_MISSINGREQATTR',
|
||||
'65' => 'PE_BADPARTNER',
|
||||
'66' => 'PE_MAILCONFIRMATION_ALREADY_SENT',
|
||||
'67' => 'PE_PASSWORDFORMEMPTY',
|
||||
'68' => 'PE_CAS_SERVICE_NOT_ALLOWED',
|
||||
'69' => 'PE_MAILFIRSTACCESS',
|
||||
'7' => 'PE_LDAPERROR',
|
||||
'70' => 'PE_MAILNOTFOUND',
|
||||
'71' => 'PE_PASSWORDFIRSTACCESS',
|
||||
'72' => 'PE_MAILCONFIRMOK',
|
||||
'73' => 'PE_RADIUSCONNECTFAILED',
|
||||
'74' => 'PE_MUST_SUPPLY_OLD_PASSWORD',
|
||||
'75' => 'PE_FORBIDDENIP',
|
||||
'76' => 'PE_CAPTCHAERROR',
|
||||
'77' => 'PE_CAPTCHAEMPTY',
|
||||
'78' => 'PE_REGISTERFIRSTACCESS',
|
||||
'79' => 'PE_REGISTERFORMEMPTY',
|
||||
'8' => 'PE_APACHESESSIONERROR',
|
||||
'80' => 'PE_REGISTERALREADYEXISTS',
|
||||
'81' => 'PE_NOTOKEN',
|
||||
'82' => 'PE_TOKENEXPIRED',
|
||||
'83' => 'PE_U2FFAILED',
|
||||
'84' => 'PE_UNAUTHORIZEDPARTNER',
|
||||
'85' => 'PE_RENEWSESSION',
|
||||
'86' => 'PE_WAIT',
|
||||
'87' => 'PE_MUSTAUTHN',
|
||||
'88' => 'PE_MUSTHAVEMAIL',
|
||||
'89' => 'PE_SAML_SERVICE_NOT_ALLOWED',
|
||||
'9' => 'PE_FIRSTACCESS',
|
||||
'90' => 'PE_OIDC_SERVICE_NOT_ALLOWED',
|
||||
'91' => 'PE_OID_SERVICE_NOT_ALLOWED',
|
||||
'92' => 'PE_GET_SERVICE_NOT_ALLOWED',
|
||||
'93' => 'PE_IMPERSONATION_SERVICE_NOT_ALLOWED',
|
||||
'94' => 'PE_ISSUERMISSINGREQATTR',
|
||||
'95' => 'PE_DECRYPTVALUE_SERVICE_NOT_ALLOWED',
|
||||
'96' => 'PE_BADOTP',
|
||||
'97' => 'PE_RESETCERTIFICATE_INVALID',
|
||||
'98' => 'PE_RESETCERTIFICATE_FORMEMPTY',
|
||||
'99' => 'PE_RESETCERTIFICATE_FIRSTACCESS'
|
||||
};
|
||||
'-1' => 'PE_DONE',
|
||||
'-2' => 'PE_REDIRECT',
|
||||
'-3' => 'PE_INFO',
|
||||
'-4' => 'PE_SENDRESPONSE',
|
||||
'-5' => 'PE_IDPCHOICE',
|
||||
'0' => 'PE_OK',
|
||||
'1' => 'PE_SESSIONEXPIRED',
|
||||
'10' => 'PE_BADCERTIFICATE',
|
||||
'100' => 'PE_PP_NOT_ALLOWED_CHARACTER',
|
||||
'101' => 'PE_PP_NOT_ALLOWED_CHARACTERS',
|
||||
'102' => 'PE_UPGRADESESSION',
|
||||
'103' => 'PE_NO_SECOND_FACTORS',
|
||||
'104' => 'PE_BAD_DEVOPS_FILE',
|
||||
'105' => 'PE_FILENOTFOUND',
|
||||
'106' => 'PE_OIDC_AUTH_ERROR',
|
||||
'2' => 'PE_FORMEMPTY',
|
||||
'20' => 'PE_NO_PASSWORD_BE',
|
||||
'21' => 'PE_PP_ACCOUNT_LOCKED',
|
||||
'22' => 'PE_PP_PASSWORD_EXPIRED',
|
||||
'23' => 'PE_CERTIFICATEREQUIRED',
|
||||
'24' => 'PE_ERROR',
|
||||
'25' => 'PE_PP_CHANGE_AFTER_RESET',
|
||||
'26' => 'PE_PP_PASSWORD_MOD_NOT_ALLOWED',
|
||||
'27' => 'PE_PP_MUST_SUPPLY_OLD_PASSWORD',
|
||||
'28' => 'PE_PP_INSUFFICIENT_PASSWORD_QUALITY',
|
||||
'29' => 'PE_PP_PASSWORD_TOO_SHORT',
|
||||
'3' => 'PE_WRONGMANAGERACCOUNT',
|
||||
'30' => 'PE_PP_PASSWORD_TOO_YOUNG',
|
||||
'31' => 'PE_PP_PASSWORD_IN_HISTORY',
|
||||
'32' => 'PE_PP_GRACE',
|
||||
'33' => 'PE_PP_EXP_WARNING',
|
||||
'34' => 'PE_PASSWORD_MISMATCH',
|
||||
'35' => 'PE_PASSWORD_OK',
|
||||
'36' => 'PE_NOTIFICATION',
|
||||
'37' => 'PE_BADURL',
|
||||
'38' => 'PE_NOSCHEME',
|
||||
'39' => 'PE_BADOLDPASSWORD',
|
||||
'4' => 'PE_USERNOTFOUND',
|
||||
'40' => 'PE_MALFORMEDUSER',
|
||||
'41' => 'PE_SESSIONNOTGRANTED',
|
||||
'42' => 'PE_CONFIRM',
|
||||
'43' => 'PE_MAILFORMEMPTY',
|
||||
'44' => 'PE_BADMAILTOKEN',
|
||||
'45' => 'PE_MAILERROR',
|
||||
'46' => 'PE_MAILOK',
|
||||
'47' => 'PE_LOGOUT_OK',
|
||||
'48' => 'PE_SAML_ERROR',
|
||||
'49' => 'PE_SAML_LOAD_SERVICE_ERROR',
|
||||
'5' => 'PE_BADCREDENTIALS',
|
||||
'50' => 'PE_SAML_LOAD_IDP_ERROR',
|
||||
'51' => 'PE_SAML_SSO_ERROR',
|
||||
'52' => 'PE_SAML_UNKNOWN_ENTITY',
|
||||
'53' => 'PE_SAML_DESTINATION_ERROR',
|
||||
'54' => 'PE_SAML_CONDITIONS_ERROR',
|
||||
'55' => 'PE_SAML_IDPSSOINITIATED_NOTALLOWED',
|
||||
'56' => 'PE_SAML_SLO_ERROR',
|
||||
'57' => 'PE_SAML_SIGNATURE_ERROR',
|
||||
'58' => 'PE_SAML_ART_ERROR',
|
||||
'59' => 'PE_SAML_SESSION_ERROR',
|
||||
'6' => 'PE_LDAPCONNECTFAILED',
|
||||
'60' => 'PE_SAML_LOAD_SP_ERROR',
|
||||
'61' => 'PE_SAML_ATTR_ERROR',
|
||||
'62' => 'PE_OPENID_EMPTY',
|
||||
'63' => 'PE_OPENID_BADID',
|
||||
'64' => 'PE_MISSINGREQATTR',
|
||||
'65' => 'PE_BADPARTNER',
|
||||
'66' => 'PE_MAILCONFIRMATION_ALREADY_SENT',
|
||||
'67' => 'PE_PASSWORDFORMEMPTY',
|
||||
'68' => 'PE_CAS_SERVICE_NOT_ALLOWED',
|
||||
'69' => 'PE_MAILFIRSTACCESS',
|
||||
'7' => 'PE_LDAPERROR',
|
||||
'70' => 'PE_MAILNOTFOUND',
|
||||
'71' => 'PE_PASSWORDFIRSTACCESS',
|
||||
'72' => 'PE_MAILCONFIRMOK',
|
||||
'73' => 'PE_RADIUSCONNECTFAILED',
|
||||
'74' => 'PE_MUST_SUPPLY_OLD_PASSWORD',
|
||||
'75' => 'PE_FORBIDDENIP',
|
||||
'76' => 'PE_CAPTCHAERROR',
|
||||
'77' => 'PE_CAPTCHAEMPTY',
|
||||
'78' => 'PE_REGISTERFIRSTACCESS',
|
||||
'79' => 'PE_REGISTERFORMEMPTY',
|
||||
'8' => 'PE_APACHESESSIONERROR',
|
||||
'80' => 'PE_REGISTERALREADYEXISTS',
|
||||
'81' => 'PE_NOTOKEN',
|
||||
'82' => 'PE_TOKENEXPIRED',
|
||||
'83' => 'PE_U2FFAILED',
|
||||
'84' => 'PE_UNAUTHORIZEDPARTNER',
|
||||
'85' => 'PE_RENEWSESSION',
|
||||
'86' => 'PE_WAIT',
|
||||
'87' => 'PE_MUSTAUTHN',
|
||||
'88' => 'PE_MUSTHAVEMAIL',
|
||||
'89' => 'PE_SAML_SERVICE_NOT_ALLOWED',
|
||||
'9' => 'PE_FIRSTACCESS',
|
||||
'90' => 'PE_OIDC_SERVICE_NOT_ALLOWED',
|
||||
'91' => 'PE_OID_SERVICE_NOT_ALLOWED',
|
||||
'92' => 'PE_GET_SERVICE_NOT_ALLOWED',
|
||||
'93' => 'PE_IMPERSONATION_SERVICE_NOT_ALLOWED',
|
||||
'94' => 'PE_ISSUERMISSINGREQATTR',
|
||||
'95' => 'PE_DECRYPTVALUE_SERVICE_NOT_ALLOWED',
|
||||
'96' => 'PE_BADOTP',
|
||||
'97' => 'PE_RESETCERTIFICATE_INVALID',
|
||||
'98' => 'PE_RESETCERTIFICATE_FORMEMPTY',
|
||||
'99' => 'PE_RESETCERTIFICATE_FIRSTACCESS'
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
# EXPORTER PARAMETERS
|
||||
our @EXPORT_OK = ('portalConsts');
|
||||
our @EXPORT_OK = ( 'portalConsts' );
|
||||
our %EXPORT_TAGS = ( 'all' => [ @EXPORT_OK, 'import' ], );
|
||||
|
||||
1;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -445,6 +445,36 @@ sub attributes {
|
|||
documentation => 'Separator for multiple values',
|
||||
flags => 'hmp',
|
||||
},
|
||||
rememberAuthChoiceRule => {
|
||||
type => 'boolOrExpr',
|
||||
default => 0,
|
||||
documentation => 'remember auth choice activation rule',
|
||||
},
|
||||
rememberCookieName => {
|
||||
type => 'text',
|
||||
test => qr/^[a-zA-Z][a-zA-Z0-9_-]*$/,
|
||||
msgFail => '__badCookieName__',
|
||||
default => 'llngrememberauthchoice',
|
||||
documentation => 'Name of the remember auth choice cookie',
|
||||
flags => 'p',
|
||||
},
|
||||
rememberCookieTimeout => {
|
||||
type => 'int',
|
||||
default => 31536000,
|
||||
documentation => 'lifetime of the remember auth choice cookie',
|
||||
flags => 'm',
|
||||
},
|
||||
rememberDefaultChecked => {
|
||||
type => 'bool',
|
||||
default => 0,
|
||||
documentation => 'Is remember auth choice checkbox enabled by default?',
|
||||
},
|
||||
rememberTimer => {
|
||||
type => 'int',
|
||||
default => 5,
|
||||
documentation => 'timer before automatic authentication with the previous remembered authentication choice',
|
||||
flags => 'm',
|
||||
},
|
||||
stayConnected => {
|
||||
type => 'boolOrExpr',
|
||||
default => 0,
|
||||
|
|
|
@ -869,6 +869,18 @@ sub tree {
|
|||
'contextSwitchingStopWithLogout',
|
||||
]
|
||||
},
|
||||
{
|
||||
title => 'rememberAuthChoice',
|
||||
help => 'rememberauthchoice.html',
|
||||
form => 'simpleInputContainer',
|
||||
nodes => [
|
||||
'rememberAuthChoiceRule',
|
||||
'rememberCookieName',
|
||||
'rememberCookieTimeout',
|
||||
'rememberDefaultChecked',
|
||||
'rememberTimer',
|
||||
]
|
||||
},
|
||||
{
|
||||
title => 'decryptValue',
|
||||
help => 'decryptvalue.html',
|
||||
|
|
|
@ -881,6 +881,12 @@
|
|||
"reloadParams":"إعادة تحميل الإعدادات",
|
||||
"reloadTimeout":"Reload timeout",
|
||||
"reloadUrls":"Reload URLs",
|
||||
"rememberAuthChoice":"Remember authentication choice",
|
||||
"rememberAuthChoiceRule":"Activation",
|
||||
"rememberCookieName":"Cookie name",
|
||||
"rememberCookieTimeout":"cookie lifetime",
|
||||
"rememberDefaultChecked":"Check by default",
|
||||
"rememberTimer":"Timer before automatic authentication",
|
||||
"remoteCookieName":"اسم ملف تعريف الارتباط",
|
||||
"remoteGlobalStorage":"وحدة الجلسات",
|
||||
"remoteGlobalStorageOptions":"خيارات وحدة الجلسات",
|
||||
|
@ -1256,4 +1262,4 @@
|
|||
"yubikey2fUrl":"خدمة أل يو أر ل",
|
||||
"yubikey2fUserCanRemoveKey":"Allow user to remove Yubikey",
|
||||
"zeroConfExplanations":"لا يحتوي الخادم على إعدادات. استخدام قالب لحفظ الأول"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -881,6 +881,12 @@
|
|||
"reloadParams":"Configuration reload",
|
||||
"reloadTimeout":"Reload timeout",
|
||||
"reloadUrls":"Reload URLs",
|
||||
"rememberAuthChoice":"Remember authentication choice",
|
||||
"rememberAuthChoiceRule":"Activation",
|
||||
"rememberCookieName":"Cookie name",
|
||||
"rememberCookieTimeout":"cookie lifetime",
|
||||
"rememberDefaultChecked":"Check by default",
|
||||
"rememberTimer":"Timer before automatic authentication",
|
||||
"remoteCookieName":"Cookie name",
|
||||
"remoteGlobalStorage":"Sessions module",
|
||||
"remoteGlobalStorageOptions":"Sessions module options",
|
||||
|
|
|
@ -881,6 +881,12 @@
|
|||
"reloadParams":"Recargar configuración",
|
||||
"reloadTimeout":"Reload timeout",
|
||||
"reloadUrls":"Recargar las URL",
|
||||
"rememberAuthChoice":"Remember authentication choice",
|
||||
"rememberAuthChoiceRule":"Activation",
|
||||
"rememberCookieName":"Cookie name",
|
||||
"rememberCookieTimeout":"cookie lifetime",
|
||||
"rememberDefaultChecked":"Check by default",
|
||||
"rememberTimer":"Timer before automatic authentication",
|
||||
"remoteCookieName":"Nombre de la cookie",
|
||||
"remoteGlobalStorage":"Módulo de sesiones",
|
||||
"remoteGlobalStorageOptions":"Opciones del módulo de sesiones",
|
||||
|
@ -1256,4 +1262,4 @@
|
|||
"yubikey2fUrl":"URL de servicio",
|
||||
"yubikey2fUserCanRemoveKey":"Allow user to remove Yubikey",
|
||||
"zeroConfExplanations":"Server has no configuration. Use template to save the first."
|
||||
}
|
||||
}
|
||||
|
|
|
@ -881,6 +881,12 @@
|
|||
"reloadParams":"Mise à jour de la configuration",
|
||||
"reloadTimeout":"Délai de mise à jour",
|
||||
"reloadUrls":"URLs de mise à jour",
|
||||
"rememberAuthChoice":"Se souvenir du choix d'authentification",
|
||||
"rememberAuthChoiceRule":"Activation",
|
||||
"rememberCookieName":"Nom du cookie",
|
||||
"rememberCookieTimeout":"Durée de vie du cookie",
|
||||
"rememberDefaultChecked":"Cocher par défaut",
|
||||
"rememberTimer":"Délai avant authentication automatique",
|
||||
"remoteCookieName":"Nom du cookie",
|
||||
"remoteGlobalStorage":"Module des sessions",
|
||||
"remoteGlobalStorageOptions":"Options du module des sessions",
|
||||
|
|
|
@ -881,6 +881,12 @@
|
|||
"reloadParams":"Configuration reload",
|
||||
"reloadTimeout":"Reload timeout",
|
||||
"reloadUrls":"רענון כתובות",
|
||||
"rememberAuthChoice":"Remember authentication choice",
|
||||
"rememberAuthChoiceRule":"Activation",
|
||||
"rememberCookieName":"Cookie name",
|
||||
"rememberCookieTimeout":"cookie lifetime",
|
||||
"rememberDefaultChecked":"Check by default",
|
||||
"rememberTimer":"Timer before automatic authentication",
|
||||
"remoteCookieName":"שם עוגיה",
|
||||
"remoteGlobalStorage":"מודול הפעלות",
|
||||
"remoteGlobalStorageOptions":"אפשרויות מודול הפעלות",
|
||||
|
@ -1256,4 +1262,4 @@
|
|||
"yubikey2fUrl":"כתובת שירות",
|
||||
"yubikey2fUserCanRemoveKey":"לאפשר למשתמש להסיר Yubikey",
|
||||
"zeroConfExplanations":"Server has no configuration. Use template to save the first."
|
||||
}
|
||||
}
|
||||
|
|
|
@ -881,6 +881,12 @@
|
|||
"reloadParams":"Ricarica di configurazione",
|
||||
"reloadTimeout":"Ricarica il timeout",
|
||||
"reloadUrls":"Ricarica gli URL",
|
||||
"rememberAuthChoice":"Remember authentication choice",
|
||||
"rememberAuthChoiceRule":"Activation",
|
||||
"rememberCookieName":"Cookie name",
|
||||
"rememberCookieTimeout":"cookie lifetime",
|
||||
"rememberDefaultChecked":"Check by default",
|
||||
"rememberTimer":"Timer before automatic authentication",
|
||||
"remoteCookieName":"Nome del cookie",
|
||||
"remoteGlobalStorage":"Modulo di sessioni",
|
||||
"remoteGlobalStorageOptions":"Opzioni del modulo Sessioni",
|
||||
|
@ -1256,4 +1262,4 @@
|
|||
"yubikey2fUrl":"URL del servizio",
|
||||
"yubikey2fUserCanRemoveKey":"Autorizza l'utente a rimuovere la Yubikey",
|
||||
"zeroConfExplanations":"Il server non ha alcuna configurazione. Utilizza il modello per salvare il primo."
|
||||
}
|
||||
}
|
||||
|
|
|
@ -881,6 +881,12 @@
|
|||
"reloadParams":"Załaduj ponownie konfigurację",
|
||||
"reloadTimeout":"Limit czasu przeładowania",
|
||||
"reloadUrls":"Załaduj ponownie adresy URL",
|
||||
"rememberAuthChoice":"Remember authentication choice",
|
||||
"rememberAuthChoiceRule":"Activation",
|
||||
"rememberCookieName":"Cookie name",
|
||||
"rememberCookieTimeout":"cookie lifetime",
|
||||
"rememberDefaultChecked":"Check by default",
|
||||
"rememberTimer":"Timer before automatic authentication",
|
||||
"remoteCookieName":"Nazwa ciasteczka",
|
||||
"remoteGlobalStorage":"Moduł sesji",
|
||||
"remoteGlobalStorageOptions":"Opcje modułu sesji",
|
||||
|
@ -1256,4 +1262,4 @@
|
|||
"yubikey2fUrl":"URL usługi",
|
||||
"yubikey2fUserCanRemoveKey":"Pozwól użytkownikowi usunąć Yubikey",
|
||||
"zeroConfExplanations":"Serwer nie ma konfiguracji. Użyj szablonu, aby zapisać pierwszy."
|
||||
}
|
||||
}
|
||||
|
|
|
@ -881,6 +881,12 @@
|
|||
"reloadParams":"Yapılandırma yeniden yüklendi",
|
||||
"reloadTimeout":"Yeniden yükleme zaman aşımı",
|
||||
"reloadUrls":"URL'leri yeniden yükle",
|
||||
"rememberAuthChoice":"Remember authentication choice",
|
||||
"rememberAuthChoiceRule":"Activation",
|
||||
"rememberCookieName":"Cookie name",
|
||||
"rememberCookieTimeout":"cookie lifetime",
|
||||
"rememberDefaultChecked":"Check by default",
|
||||
"rememberTimer":"Timer before automatic authentication",
|
||||
"remoteCookieName":"Çerez adı",
|
||||
"remoteGlobalStorage":"Oturumlar modülü",
|
||||
"remoteGlobalStorageOptions":"Oturumlar modülü seçenekleri",
|
||||
|
@ -1256,4 +1262,4 @@
|
|||
"yubikey2fUrl":"Servis URL'si",
|
||||
"yubikey2fUserCanRemoveKey":"Yubikey'i kaldırmak için kullanıcıya izin ver",
|
||||
"zeroConfExplanations":"Sunucunun yapılandırması yok. Şimdi bir tane kaydetmek için şablonu kullanın."
|
||||
}
|
||||
}
|
||||
|
|
|
@ -881,6 +881,12 @@
|
|||
"reloadParams":"Tải lại cấu hình",
|
||||
"reloadTimeout":"Reload timeout",
|
||||
"reloadUrls":"Reload URLs",
|
||||
"rememberAuthChoice":"Remember authentication choice",
|
||||
"rememberAuthChoiceRule":"Activation",
|
||||
"rememberCookieName":"Cookie name",
|
||||
"rememberCookieTimeout":"cookie lifetime",
|
||||
"rememberDefaultChecked":"Check by default",
|
||||
"rememberTimer":"Timer before automatic authentication",
|
||||
"remoteCookieName":"Tên cookie",
|
||||
"remoteGlobalStorage":"Mô-đun phiên",
|
||||
"remoteGlobalStorageOptions":"Tùy chọn mô-đun phiên",
|
||||
|
@ -1256,4 +1262,4 @@
|
|||
"yubikey2fUrl":"Dịch vụ URL",
|
||||
"yubikey2fUserCanRemoveKey":"Allow user to remove Yubikey",
|
||||
"zeroConfExplanations":"Máy chủ không có cấu hình. Sử dụng mẫu để lưu đầu tiên. "
|
||||
}
|
||||
}
|
||||
|
|
|
@ -881,6 +881,12 @@
|
|||
"reloadParams":"設定重新載入",
|
||||
"reloadTimeout":"重新載入逾時",
|
||||
"reloadUrls":"重新載入 URL",
|
||||
"rememberAuthChoice":"Remember authentication choice",
|
||||
"rememberAuthChoiceRule":"Activation",
|
||||
"rememberCookieName":"Cookie name",
|
||||
"rememberCookieTimeout":"cookie lifetime",
|
||||
"rememberDefaultChecked":"Check by default",
|
||||
"rememberTimer":"Timer before automatic authentication",
|
||||
"remoteCookieName":"Cookie 名称",
|
||||
"remoteGlobalStorage":"工作階段模組",
|
||||
"remoteGlobalStorageOptions":"工作階段模組選項",
|
||||
|
@ -1256,4 +1262,4 @@
|
|||
"yubikey2fUrl":"服务 URL",
|
||||
"yubikey2fUserCanRemoveKey":"允許使用者移除 Yubikey",
|
||||
"zeroConfExplanations":"伺服器未設定。使用飯本來儲存第一個。"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -881,6 +881,12 @@
|
|||
"reloadParams":"設定重新載入",
|
||||
"reloadTimeout":"重新載入逾時",
|
||||
"reloadUrls":"重新載入 URL",
|
||||
"rememberAuthChoice":"Remember authentication choice",
|
||||
"rememberAuthChoiceRule":"Activation",
|
||||
"rememberCookieName":"Cookie name",
|
||||
"rememberCookieTimeout":"cookie lifetime",
|
||||
"rememberDefaultChecked":"Check by default",
|
||||
"rememberTimer":"Timer before automatic authentication",
|
||||
"remoteCookieName":"Cookie 名稱",
|
||||
"remoteGlobalStorage":"工作階段模組",
|
||||
"remoteGlobalStorageOptions":"工作階段模組選項",
|
||||
|
@ -1256,4 +1262,4 @@
|
|||
"yubikey2fUrl":"服務 URL",
|
||||
"yubikey2fUserCanRemoveKey":"允許使用者移除 Yubikey",
|
||||
"zeroConfExplanations":"伺服器未設定。使用飯本來儲存第一個。"
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -7,332 +7,224 @@ use Exporter 'import';
|
|||
our $VERSION = '2.0.15';
|
||||
|
||||
use constant HANDLER => 'Lemonldap::NG::Handler::PSGI::Main';
|
||||
use constant URIRE =>
|
||||
qr{(((?^:https?))://((?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][-a-zA-Z0-9]*[a-zA-Z0-9]|[a-zA-Z])[.]?)|(?:[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+)))(?::((?:[0-9]*)))?(/(((?:(?:(?:(?:[a-zA-Z0-9\-_.!~*'():\@&=+\$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*)(?:;(?:(?:[a-zA-Z0-9\-_.!~*'():\@&=+\$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*))*)(?:/(?:(?:(?:[a-zA-Z0-9\-_.!~*'():\@&=+\$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*)(?:;(?:(?:[a-zA-Z0-9\-_.!~*'():\@&=+\$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*))*))*))(?:[?]((?:(?:[;/?:\@&=+\$,a-zA-Z0-9\-_.!~*'()]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*)))?))?)};
|
||||
use constant URIRE => qr{(((?^:https?))://((?:(?:(?:(?:(?:[a-zA-Z0-9][-a-zA-Z0-9]*)?[a-zA-Z0-9])[.])*(?:[a-zA-Z][-a-zA-Z0-9]*[a-zA-Z0-9]|[a-zA-Z])[.]?)|(?:[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+)))(?::((?:[0-9]*)))?(/(((?:(?:(?:(?:[a-zA-Z0-9\-_.!~*'():\@&=+\$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*)(?:;(?:(?:[a-zA-Z0-9\-_.!~*'():\@&=+\$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*))*)(?:/(?:(?:(?:[a-zA-Z0-9\-_.!~*'():\@&=+\$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*)(?:;(?:(?:[a-zA-Z0-9\-_.!~*'():\@&=+\$,]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*))*))*))(?:[?]((?:(?:[;/?:\@&=+\$,a-zA-Z0-9\-_.!~*'()]+|(?:%[a-fA-F0-9][a-fA-F0-9]))*)))?))?)};
|
||||
use constant {
|
||||
PE_IDPCHOICE => -5,
|
||||
PE_SENDRESPONSE => -4,
|
||||
PE_INFO => -3,
|
||||
PE_REDIRECT => -2,
|
||||
PE_DONE => -1,
|
||||
PE_OK => 0,
|
||||
PE_SESSIONEXPIRED => 1,
|
||||
PE_FORMEMPTY => 2,
|
||||
PE_WRONGMANAGERACCOUNT => 3,
|
||||
PE_USERNOTFOUND => 4,
|
||||
PE_BADCREDENTIALS => 5,
|
||||
PE_LDAPCONNECTFAILED => 6,
|
||||
PE_LDAPERROR => 7,
|
||||
PE_APACHESESSIONERROR => 8,
|
||||
PE_FIRSTACCESS => 9,
|
||||
PE_BADCERTIFICATE => 10,
|
||||
PE_NO_PASSWORD_BE => 20,
|
||||
PE_PP_ACCOUNT_LOCKED => 21,
|
||||
PE_PP_PASSWORD_EXPIRED => 22,
|
||||
PE_CERTIFICATEREQUIRED => 23,
|
||||
PE_ERROR => 24,
|
||||
PE_PP_CHANGE_AFTER_RESET => 25,
|
||||
PE_PP_PASSWORD_MOD_NOT_ALLOWED => 26,
|
||||
PE_PP_MUST_SUPPLY_OLD_PASSWORD => 27,
|
||||
PE_PP_INSUFFICIENT_PASSWORD_QUALITY => 28,
|
||||
PE_PP_PASSWORD_TOO_SHORT => 29,
|
||||
PE_PP_PASSWORD_TOO_YOUNG => 30,
|
||||
PE_PP_PASSWORD_IN_HISTORY => 31,
|
||||
PE_PP_GRACE => 32,
|
||||
PE_PP_EXP_WARNING => 33,
|
||||
PE_PASSWORD_MISMATCH => 34,
|
||||
PE_PASSWORD_OK => 35,
|
||||
PE_NOTIFICATION => 36,
|
||||
PE_BADURL => 37,
|
||||
PE_NOSCHEME => 38,
|
||||
PE_BADOLDPASSWORD => 39,
|
||||
PE_MALFORMEDUSER => 40,
|
||||
PE_SESSIONNOTGRANTED => 41,
|
||||
PE_CONFIRM => 42,
|
||||
PE_MAILFORMEMPTY => 43,
|
||||
PE_BADMAILTOKEN => 44,
|
||||
PE_MAILERROR => 45,
|
||||
PE_MAILOK => 46,
|
||||
PE_LOGOUT_OK => 47,
|
||||
PE_SAML_ERROR => 48,
|
||||
PE_SAML_LOAD_SERVICE_ERROR => 49,
|
||||
PE_SAML_LOAD_IDP_ERROR => 50,
|
||||
PE_SAML_SSO_ERROR => 51,
|
||||
PE_SAML_UNKNOWN_ENTITY => 52,
|
||||
PE_SAML_DESTINATION_ERROR => 53,
|
||||
PE_SAML_CONDITIONS_ERROR => 54,
|
||||
PE_SAML_IDPSSOINITIATED_NOTALLOWED => 55,
|
||||
PE_SAML_SLO_ERROR => 56,
|
||||
PE_SAML_SIGNATURE_ERROR => 57,
|
||||
PE_SAML_ART_ERROR => 58,
|
||||
PE_SAML_SESSION_ERROR => 59,
|
||||
PE_SAML_LOAD_SP_ERROR => 60,
|
||||
PE_SAML_ATTR_ERROR => 61,
|
||||
PE_OPENID_EMPTY => 62,
|
||||
PE_OPENID_BADID => 63,
|
||||
PE_MISSINGREQATTR => 64,
|
||||
PE_BADPARTNER => 65,
|
||||
PE_MAILCONFIRMATION_ALREADY_SENT => 66,
|
||||
PE_PASSWORDFORMEMPTY => 67,
|
||||
PE_CAS_SERVICE_NOT_ALLOWED => 68,
|
||||
PE_MAILFIRSTACCESS => 69,
|
||||
PE_MAILNOTFOUND => 70,
|
||||
PE_PASSWORDFIRSTACCESS => 71,
|
||||
PE_MAILCONFIRMOK => 72,
|
||||
PE_RADIUSCONNECTFAILED => 73,
|
||||
PE_MUST_SUPPLY_OLD_PASSWORD => 74,
|
||||
PE_FORBIDDENIP => 75,
|
||||
PE_CAPTCHAERROR => 76,
|
||||
PE_CAPTCHAEMPTY => 77,
|
||||
PE_REGISTERFIRSTACCESS => 78,
|
||||
PE_REGISTERFORMEMPTY => 79,
|
||||
PE_REGISTERALREADYEXISTS => 80,
|
||||
PE_NOTOKEN => 81,
|
||||
PE_TOKENEXPIRED => 82,
|
||||
PE_U2FFAILED => 83,
|
||||
PE_UNAUTHORIZEDPARTNER => 84,
|
||||
PE_RENEWSESSION => 85,
|
||||
PE_WAIT => 86,
|
||||
PE_MUSTAUTHN => 87,
|
||||
PE_MUSTHAVEMAIL => 88,
|
||||
PE_SAML_SERVICE_NOT_ALLOWED => 89,
|
||||
PE_OIDC_SERVICE_NOT_ALLOWED => 90,
|
||||
PE_OID_SERVICE_NOT_ALLOWED => 91,
|
||||
PE_GET_SERVICE_NOT_ALLOWED => 92,
|
||||
PE_IDPCHOICE => -5,
|
||||
PE_SENDRESPONSE => -4,
|
||||
PE_INFO => -3,
|
||||
PE_REDIRECT => -2,
|
||||
PE_DONE => -1,
|
||||
PE_OK => 0,
|
||||
PE_SESSIONEXPIRED => 1,
|
||||
PE_FORMEMPTY => 2,
|
||||
PE_WRONGMANAGERACCOUNT => 3,
|
||||
PE_USERNOTFOUND => 4,
|
||||
PE_BADCREDENTIALS => 5,
|
||||
PE_LDAPCONNECTFAILED => 6,
|
||||
PE_LDAPERROR => 7,
|
||||
PE_APACHESESSIONERROR => 8,
|
||||
PE_FIRSTACCESS => 9,
|
||||
PE_BADCERTIFICATE => 10,
|
||||
PE_NO_PASSWORD_BE => 20,
|
||||
PE_PP_ACCOUNT_LOCKED => 21,
|
||||
PE_PP_PASSWORD_EXPIRED => 22,
|
||||
PE_CERTIFICATEREQUIRED => 23,
|
||||
PE_ERROR => 24,
|
||||
PE_PP_CHANGE_AFTER_RESET => 25,
|
||||
PE_PP_PASSWORD_MOD_NOT_ALLOWED => 26,
|
||||
PE_PP_MUST_SUPPLY_OLD_PASSWORD => 27,
|
||||
PE_PP_INSUFFICIENT_PASSWORD_QUALITY => 28,
|
||||
PE_PP_PASSWORD_TOO_SHORT => 29,
|
||||
PE_PP_PASSWORD_TOO_YOUNG => 30,
|
||||
PE_PP_PASSWORD_IN_HISTORY => 31,
|
||||
PE_PP_GRACE => 32,
|
||||
PE_PP_EXP_WARNING => 33,
|
||||
PE_PASSWORD_MISMATCH => 34,
|
||||
PE_PASSWORD_OK => 35,
|
||||
PE_NOTIFICATION => 36,
|
||||
PE_BADURL => 37,
|
||||
PE_NOSCHEME => 38,
|
||||
PE_BADOLDPASSWORD => 39,
|
||||
PE_MALFORMEDUSER => 40,
|
||||
PE_SESSIONNOTGRANTED => 41,
|
||||
PE_CONFIRM => 42,
|
||||
PE_MAILFORMEMPTY => 43,
|
||||
PE_BADMAILTOKEN => 44,
|
||||
PE_MAILERROR => 45,
|
||||
PE_MAILOK => 46,
|
||||
PE_LOGOUT_OK => 47,
|
||||
PE_SAML_ERROR => 48,
|
||||
PE_SAML_LOAD_SERVICE_ERROR => 49,
|
||||
PE_SAML_LOAD_IDP_ERROR => 50,
|
||||
PE_SAML_SSO_ERROR => 51,
|
||||
PE_SAML_UNKNOWN_ENTITY => 52,
|
||||
PE_SAML_DESTINATION_ERROR => 53,
|
||||
PE_SAML_CONDITIONS_ERROR => 54,
|
||||
PE_SAML_IDPSSOINITIATED_NOTALLOWED => 55,
|
||||
PE_SAML_SLO_ERROR => 56,
|
||||
PE_SAML_SIGNATURE_ERROR => 57,
|
||||
PE_SAML_ART_ERROR => 58,
|
||||
PE_SAML_SESSION_ERROR => 59,
|
||||
PE_SAML_LOAD_SP_ERROR => 60,
|
||||
PE_SAML_ATTR_ERROR => 61,
|
||||
PE_OPENID_EMPTY => 62,
|
||||
PE_OPENID_BADID => 63,
|
||||
PE_MISSINGREQATTR => 64,
|
||||
PE_BADPARTNER => 65,
|
||||
PE_MAILCONFIRMATION_ALREADY_SENT => 66,
|
||||
PE_PASSWORDFORMEMPTY => 67,
|
||||
PE_CAS_SERVICE_NOT_ALLOWED => 68,
|
||||
PE_MAILFIRSTACCESS => 69,
|
||||
PE_MAILNOTFOUND => 70,
|
||||
PE_PASSWORDFIRSTACCESS => 71,
|
||||
PE_MAILCONFIRMOK => 72,
|
||||
PE_RADIUSCONNECTFAILED => 73,
|
||||
PE_MUST_SUPPLY_OLD_PASSWORD => 74,
|
||||
PE_FORBIDDENIP => 75,
|
||||
PE_CAPTCHAERROR => 76,
|
||||
PE_CAPTCHAEMPTY => 77,
|
||||
PE_REGISTERFIRSTACCESS => 78,
|
||||
PE_REGISTERFORMEMPTY => 79,
|
||||
PE_REGISTERALREADYEXISTS => 80,
|
||||
PE_NOTOKEN => 81,
|
||||
PE_TOKENEXPIRED => 82,
|
||||
PE_U2FFAILED => 83,
|
||||
PE_UNAUTHORIZEDPARTNER => 84,
|
||||
PE_RENEWSESSION => 85,
|
||||
PE_WAIT => 86,
|
||||
PE_MUSTAUTHN => 87,
|
||||
PE_MUSTHAVEMAIL => 88,
|
||||
PE_SAML_SERVICE_NOT_ALLOWED => 89,
|
||||
PE_OIDC_SERVICE_NOT_ALLOWED => 90,
|
||||
PE_OID_SERVICE_NOT_ALLOWED => 91,
|
||||
PE_GET_SERVICE_NOT_ALLOWED => 92,
|
||||
PE_IMPERSONATION_SERVICE_NOT_ALLOWED => 93,
|
||||
PE_ISSUERMISSINGREQATTR => 94,
|
||||
PE_DECRYPTVALUE_SERVICE_NOT_ALLOWED => 95,
|
||||
PE_BADOTP => 96,
|
||||
PE_RESETCERTIFICATE_INVALID => 97,
|
||||
PE_RESETCERTIFICATE_FORMEMPTY => 98,
|
||||
PE_RESETCERTIFICATE_FIRSTACCESS => 99,
|
||||
PE_PP_NOT_ALLOWED_CHARACTER => 100,
|
||||
PE_PP_NOT_ALLOWED_CHARACTERS => 101,
|
||||
PE_UPGRADESESSION => 102,
|
||||
PE_NO_SECOND_FACTORS => 103,
|
||||
PE_BAD_DEVOPS_FILE => 104,
|
||||
PE_FILENOTFOUND => 105,
|
||||
PE_OIDC_AUTH_ERROR => 106,
|
||||
PE_ISSUERMISSINGREQATTR => 94,
|
||||
PE_DECRYPTVALUE_SERVICE_NOT_ALLOWED => 95,
|
||||
PE_BADOTP => 96,
|
||||
PE_RESETCERTIFICATE_INVALID => 97,
|
||||
PE_RESETCERTIFICATE_FORMEMPTY => 98,
|
||||
PE_RESETCERTIFICATE_FIRSTACCESS => 99,
|
||||
PE_PP_NOT_ALLOWED_CHARACTER => 100,
|
||||
PE_PP_NOT_ALLOWED_CHARACTERS => 101,
|
||||
PE_UPGRADESESSION => 102,
|
||||
PE_NO_SECOND_FACTORS => 103,
|
||||
PE_BAD_DEVOPS_FILE => 104,
|
||||
PE_FILENOTFOUND => 105,
|
||||
PE_OIDC_AUTH_ERROR => 106,
|
||||
};
|
||||
|
||||
sub portalConsts {
|
||||
return {
|
||||
'-1' => 'PE_DONE',
|
||||
'-2' => 'PE_REDIRECT',
|
||||
'-3' => 'PE_INFO',
|
||||
'-4' => 'PE_SENDRESPONSE',
|
||||
'-5' => 'PE_IDPCHOICE',
|
||||
'0' => 'PE_OK',
|
||||
'1' => 'PE_SESSIONEXPIRED',
|
||||
'10' => 'PE_BADCERTIFICATE',
|
||||
'100' => 'PE_PP_NOT_ALLOWED_CHARACTER',
|
||||
'101' => 'PE_PP_NOT_ALLOWED_CHARACTERS',
|
||||
'102' => 'PE_UPGRADESESSION',
|
||||
'103' => 'PE_NO_SECOND_FACTORS',
|
||||
'104' => 'PE_BAD_DEVOPS_FILE',
|
||||
'105' => 'PE_FILENOTFOUND',
|
||||
'106' => 'PE_OIDC_AUTH_ERROR',
|
||||
'2' => 'PE_FORMEMPTY',
|
||||
'20' => 'PE_NO_PASSWORD_BE',
|
||||
'21' => 'PE_PP_ACCOUNT_LOCKED',
|
||||
'22' => 'PE_PP_PASSWORD_EXPIRED',
|
||||
'23' => 'PE_CERTIFICATEREQUIRED',
|
||||
'24' => 'PE_ERROR',
|
||||
'25' => 'PE_PP_CHANGE_AFTER_RESET',
|
||||
'26' => 'PE_PP_PASSWORD_MOD_NOT_ALLOWED',
|
||||
'27' => 'PE_PP_MUST_SUPPLY_OLD_PASSWORD',
|
||||
'28' => 'PE_PP_INSUFFICIENT_PASSWORD_QUALITY',
|
||||
'29' => 'PE_PP_PASSWORD_TOO_SHORT',
|
||||
'3' => 'PE_WRONGMANAGERACCOUNT',
|
||||
'30' => 'PE_PP_PASSWORD_TOO_YOUNG',
|
||||
'31' => 'PE_PP_PASSWORD_IN_HISTORY',
|
||||
'32' => 'PE_PP_GRACE',
|
||||
'33' => 'PE_PP_EXP_WARNING',
|
||||
'34' => 'PE_PASSWORD_MISMATCH',
|
||||
'35' => 'PE_PASSWORD_OK',
|
||||
'36' => 'PE_NOTIFICATION',
|
||||
'37' => 'PE_BADURL',
|
||||
'38' => 'PE_NOSCHEME',
|
||||
'39' => 'PE_BADOLDPASSWORD',
|
||||
'4' => 'PE_USERNOTFOUND',
|
||||
'40' => 'PE_MALFORMEDUSER',
|
||||
'41' => 'PE_SESSIONNOTGRANTED',
|
||||
'42' => 'PE_CONFIRM',
|
||||
'43' => 'PE_MAILFORMEMPTY',
|
||||
'44' => 'PE_BADMAILTOKEN',
|
||||
'45' => 'PE_MAILERROR',
|
||||
'46' => 'PE_MAILOK',
|
||||
'47' => 'PE_LOGOUT_OK',
|
||||
'48' => 'PE_SAML_ERROR',
|
||||
'49' => 'PE_SAML_LOAD_SERVICE_ERROR',
|
||||
'5' => 'PE_BADCREDENTIALS',
|
||||
'50' => 'PE_SAML_LOAD_IDP_ERROR',
|
||||
'51' => 'PE_SAML_SSO_ERROR',
|
||||
'52' => 'PE_SAML_UNKNOWN_ENTITY',
|
||||
'53' => 'PE_SAML_DESTINATION_ERROR',
|
||||
'54' => 'PE_SAML_CONDITIONS_ERROR',
|
||||
'55' => 'PE_SAML_IDPSSOINITIATED_NOTALLOWED',
|
||||
'56' => 'PE_SAML_SLO_ERROR',
|
||||
'57' => 'PE_SAML_SIGNATURE_ERROR',
|
||||
'58' => 'PE_SAML_ART_ERROR',
|
||||
'59' => 'PE_SAML_SESSION_ERROR',
|
||||
'6' => 'PE_LDAPCONNECTFAILED',
|
||||
'60' => 'PE_SAML_LOAD_SP_ERROR',
|
||||
'61' => 'PE_SAML_ATTR_ERROR',
|
||||
'62' => 'PE_OPENID_EMPTY',
|
||||
'63' => 'PE_OPENID_BADID',
|
||||
'64' => 'PE_MISSINGREQATTR',
|
||||
'65' => 'PE_BADPARTNER',
|
||||
'66' => 'PE_MAILCONFIRMATION_ALREADY_SENT',
|
||||
'67' => 'PE_PASSWORDFORMEMPTY',
|
||||
'68' => 'PE_CAS_SERVICE_NOT_ALLOWED',
|
||||
'69' => 'PE_MAILFIRSTACCESS',
|
||||
'7' => 'PE_LDAPERROR',
|
||||
'70' => 'PE_MAILNOTFOUND',
|
||||
'71' => 'PE_PASSWORDFIRSTACCESS',
|
||||
'72' => 'PE_MAILCONFIRMOK',
|
||||
'73' => 'PE_RADIUSCONNECTFAILED',
|
||||
'74' => 'PE_MUST_SUPPLY_OLD_PASSWORD',
|
||||
'75' => 'PE_FORBIDDENIP',
|
||||
'76' => 'PE_CAPTCHAERROR',
|
||||
'77' => 'PE_CAPTCHAEMPTY',
|
||||
'78' => 'PE_REGISTERFIRSTACCESS',
|
||||
'79' => 'PE_REGISTERFORMEMPTY',
|
||||
'8' => 'PE_APACHESESSIONERROR',
|
||||
'80' => 'PE_REGISTERALREADYEXISTS',
|
||||
'81' => 'PE_NOTOKEN',
|
||||
'82' => 'PE_TOKENEXPIRED',
|
||||
'83' => 'PE_U2FFAILED',
|
||||
'84' => 'PE_UNAUTHORIZEDPARTNER',
|
||||
'85' => 'PE_RENEWSESSION',
|
||||
'86' => 'PE_WAIT',
|
||||
'87' => 'PE_MUSTAUTHN',
|
||||
'88' => 'PE_MUSTHAVEMAIL',
|
||||
'89' => 'PE_SAML_SERVICE_NOT_ALLOWED',
|
||||
'9' => 'PE_FIRSTACCESS',
|
||||
'90' => 'PE_OIDC_SERVICE_NOT_ALLOWED',
|
||||
'91' => 'PE_OID_SERVICE_NOT_ALLOWED',
|
||||
'92' => 'PE_GET_SERVICE_NOT_ALLOWED',
|
||||
'93' => 'PE_IMPERSONATION_SERVICE_NOT_ALLOWED',
|
||||
'94' => 'PE_ISSUERMISSINGREQATTR',
|
||||
'95' => 'PE_DECRYPTVALUE_SERVICE_NOT_ALLOWED',
|
||||
'96' => 'PE_BADOTP',
|
||||
'97' => 'PE_RESETCERTIFICATE_INVALID',
|
||||
'98' => 'PE_RESETCERTIFICATE_FORMEMPTY',
|
||||
'99' => 'PE_RESETCERTIFICATE_FIRSTACCESS'
|
||||
};
|
||||
'-1' => 'PE_DONE',
|
||||
'-2' => 'PE_REDIRECT',
|
||||
'-3' => 'PE_INFO',
|
||||
'-4' => 'PE_SENDRESPONSE',
|
||||
'-5' => 'PE_IDPCHOICE',
|
||||
'0' => 'PE_OK',
|
||||
'1' => 'PE_SESSIONEXPIRED',
|
||||
'10' => 'PE_BADCERTIFICATE',
|
||||
'100' => 'PE_PP_NOT_ALLOWED_CHARACTER',
|
||||
'101' => 'PE_PP_NOT_ALLOWED_CHARACTERS',
|
||||
'102' => 'PE_UPGRADESESSION',
|
||||
'103' => 'PE_NO_SECOND_FACTORS',
|
||||
'104' => 'PE_BAD_DEVOPS_FILE',
|
||||
'105' => 'PE_FILENOTFOUND',
|
||||
'106' => 'PE_OIDC_AUTH_ERROR',
|
||||
'2' => 'PE_FORMEMPTY',
|
||||
'20' => 'PE_NO_PASSWORD_BE',
|
||||
'21' => 'PE_PP_ACCOUNT_LOCKED',
|
||||
'22' => 'PE_PP_PASSWORD_EXPIRED',
|
||||
'23' => 'PE_CERTIFICATEREQUIRED',
|
||||
'24' => 'PE_ERROR',
|
||||
'25' => 'PE_PP_CHANGE_AFTER_RESET',
|
||||
'26' => 'PE_PP_PASSWORD_MOD_NOT_ALLOWED',
|
||||
'27' => 'PE_PP_MUST_SUPPLY_OLD_PASSWORD',
|
||||
'28' => 'PE_PP_INSUFFICIENT_PASSWORD_QUALITY',
|
||||
'29' => 'PE_PP_PASSWORD_TOO_SHORT',
|
||||
'3' => 'PE_WRONGMANAGERACCOUNT',
|
||||
'30' => 'PE_PP_PASSWORD_TOO_YOUNG',
|
||||
'31' => 'PE_PP_PASSWORD_IN_HISTORY',
|
||||
'32' => 'PE_PP_GRACE',
|
||||
'33' => 'PE_PP_EXP_WARNING',
|
||||
'34' => 'PE_PASSWORD_MISMATCH',
|
||||
'35' => 'PE_PASSWORD_OK',
|
||||
'36' => 'PE_NOTIFICATION',
|
||||
'37' => 'PE_BADURL',
|
||||
'38' => 'PE_NOSCHEME',
|
||||
'39' => 'PE_BADOLDPASSWORD',
|
||||
'4' => 'PE_USERNOTFOUND',
|
||||
'40' => 'PE_MALFORMEDUSER',
|
||||
'41' => 'PE_SESSIONNOTGRANTED',
|
||||
'42' => 'PE_CONFIRM',
|
||||
'43' => 'PE_MAILFORMEMPTY',
|
||||
'44' => 'PE_BADMAILTOKEN',
|
||||
'45' => 'PE_MAILERROR',
|
||||
'46' => 'PE_MAILOK',
|
||||
'47' => 'PE_LOGOUT_OK',
|
||||
'48' => 'PE_SAML_ERROR',
|
||||
'49' => 'PE_SAML_LOAD_SERVICE_ERROR',
|
||||
'5' => 'PE_BADCREDENTIALS',
|
||||
'50' => 'PE_SAML_LOAD_IDP_ERROR',
|
||||
'51' => 'PE_SAML_SSO_ERROR',
|
||||
'52' => 'PE_SAML_UNKNOWN_ENTITY',
|
||||
'53' => 'PE_SAML_DESTINATION_ERROR',
|
||||
'54' => 'PE_SAML_CONDITIONS_ERROR',
|
||||
'55' => 'PE_SAML_IDPSSOINITIATED_NOTALLOWED',
|
||||
'56' => 'PE_SAML_SLO_ERROR',
|
||||
'57' => 'PE_SAML_SIGNATURE_ERROR',
|
||||
'58' => 'PE_SAML_ART_ERROR',
|
||||
'59' => 'PE_SAML_SESSION_ERROR',
|
||||
'6' => 'PE_LDAPCONNECTFAILED',
|
||||
'60' => 'PE_SAML_LOAD_SP_ERROR',
|
||||
'61' => 'PE_SAML_ATTR_ERROR',
|
||||
'62' => 'PE_OPENID_EMPTY',
|
||||
'63' => 'PE_OPENID_BADID',
|
||||
'64' => 'PE_MISSINGREQATTR',
|
||||
'65' => 'PE_BADPARTNER',
|
||||
'66' => 'PE_MAILCONFIRMATION_ALREADY_SENT',
|
||||
'67' => 'PE_PASSWORDFORMEMPTY',
|
||||
'68' => 'PE_CAS_SERVICE_NOT_ALLOWED',
|
||||
'69' => 'PE_MAILFIRSTACCESS',
|
||||
'7' => 'PE_LDAPERROR',
|
||||
'70' => 'PE_MAILNOTFOUND',
|
||||
'71' => 'PE_PASSWORDFIRSTACCESS',
|
||||
'72' => 'PE_MAILCONFIRMOK',
|
||||
'73' => 'PE_RADIUSCONNECTFAILED',
|
||||
'74' => 'PE_MUST_SUPPLY_OLD_PASSWORD',
|
||||
'75' => 'PE_FORBIDDENIP',
|
||||
'76' => 'PE_CAPTCHAERROR',
|
||||
'77' => 'PE_CAPTCHAEMPTY',
|
||||
'78' => 'PE_REGISTERFIRSTACCESS',
|
||||
'79' => 'PE_REGISTERFORMEMPTY',
|
||||
'8' => 'PE_APACHESESSIONERROR',
|
||||
'80' => 'PE_REGISTERALREADYEXISTS',
|
||||
'81' => 'PE_NOTOKEN',
|
||||
'82' => 'PE_TOKENEXPIRED',
|
||||
'83' => 'PE_U2FFAILED',
|
||||
'84' => 'PE_UNAUTHORIZEDPARTNER',
|
||||
'85' => 'PE_RENEWSESSION',
|
||||
'86' => 'PE_WAIT',
|
||||
'87' => 'PE_MUSTAUTHN',
|
||||
'88' => 'PE_MUSTHAVEMAIL',
|
||||
'89' => 'PE_SAML_SERVICE_NOT_ALLOWED',
|
||||
'9' => 'PE_FIRSTACCESS',
|
||||
'90' => 'PE_OIDC_SERVICE_NOT_ALLOWED',
|
||||
'91' => 'PE_OID_SERVICE_NOT_ALLOWED',
|
||||
'92' => 'PE_GET_SERVICE_NOT_ALLOWED',
|
||||
'93' => 'PE_IMPERSONATION_SERVICE_NOT_ALLOWED',
|
||||
'94' => 'PE_ISSUERMISSINGREQATTR',
|
||||
'95' => 'PE_DECRYPTVALUE_SERVICE_NOT_ALLOWED',
|
||||
'96' => 'PE_BADOTP',
|
||||
'97' => 'PE_RESETCERTIFICATE_INVALID',
|
||||
'98' => 'PE_RESETCERTIFICATE_FORMEMPTY',
|
||||
'99' => 'PE_RESETCERTIFICATE_FIRSTACCESS'
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
# EXPORTER PARAMETERS
|
||||
our @EXPORT_OK = (
|
||||
'portalConsts',
|
||||
'HANDLER',
|
||||
'URIRE',
|
||||
'PE_IDPCHOICE',
|
||||
'PE_SENDRESPONSE',
|
||||
'PE_INFO',
|
||||
'PE_REDIRECT',
|
||||
'PE_DONE',
|
||||
'PE_OK',
|
||||
'PE_SESSIONEXPIRED',
|
||||
'PE_FORMEMPTY',
|
||||
'PE_WRONGMANAGERACCOUNT',
|
||||
'PE_USERNOTFOUND',
|
||||
'PE_BADCREDENTIALS',
|
||||
'PE_LDAPCONNECTFAILED',
|
||||
'PE_LDAPERROR',
|
||||
'PE_APACHESESSIONERROR',
|
||||
'PE_FIRSTACCESS',
|
||||
'PE_BADCERTIFICATE',
|
||||
'PE_NO_PASSWORD_BE',
|
||||
'PE_PP_ACCOUNT_LOCKED',
|
||||
'PE_PP_PASSWORD_EXPIRED',
|
||||
'PE_CERTIFICATEREQUIRED',
|
||||
'PE_ERROR',
|
||||
'PE_PP_CHANGE_AFTER_RESET',
|
||||
'PE_PP_PASSWORD_MOD_NOT_ALLOWED',
|
||||
'PE_PP_MUST_SUPPLY_OLD_PASSWORD',
|
||||
'PE_PP_INSUFFICIENT_PASSWORD_QUALITY',
|
||||
'PE_PP_PASSWORD_TOO_SHORT',
|
||||
'PE_PP_PASSWORD_TOO_YOUNG',
|
||||
'PE_PP_PASSWORD_IN_HISTORY',
|
||||
'PE_PP_GRACE',
|
||||
'PE_PP_EXP_WARNING',
|
||||
'PE_PASSWORD_MISMATCH',
|
||||
'PE_PASSWORD_OK',
|
||||
'PE_NOTIFICATION',
|
||||
'PE_BADURL',
|
||||
'PE_NOSCHEME',
|
||||
'PE_BADOLDPASSWORD',
|
||||
'PE_MALFORMEDUSER',
|
||||
'PE_SESSIONNOTGRANTED',
|
||||
'PE_CONFIRM',
|
||||
'PE_MAILFORMEMPTY',
|
||||
'PE_BADMAILTOKEN',
|
||||
'PE_MAILERROR',
|
||||
'PE_MAILOK',
|
||||
'PE_LOGOUT_OK',
|
||||
'PE_SAML_ERROR',
|
||||
'PE_SAML_LOAD_SERVICE_ERROR',
|
||||
'PE_SAML_LOAD_IDP_ERROR',
|
||||
'PE_SAML_SSO_ERROR',
|
||||
'PE_SAML_UNKNOWN_ENTITY',
|
||||
'PE_SAML_DESTINATION_ERROR',
|
||||
'PE_SAML_CONDITIONS_ERROR',
|
||||
'PE_SAML_IDPSSOINITIATED_NOTALLOWED',
|
||||
'PE_SAML_SLO_ERROR',
|
||||
'PE_SAML_SIGNATURE_ERROR',
|
||||
'PE_SAML_ART_ERROR',
|
||||
'PE_SAML_SESSION_ERROR',
|
||||
'PE_SAML_LOAD_SP_ERROR',
|
||||
'PE_SAML_ATTR_ERROR',
|
||||
'PE_OPENID_EMPTY',
|
||||
'PE_OPENID_BADID',
|
||||
'PE_MISSINGREQATTR',
|
||||
'PE_BADPARTNER',
|
||||
'PE_MAILCONFIRMATION_ALREADY_SENT',
|
||||
'PE_PASSWORDFORMEMPTY',
|
||||
'PE_CAS_SERVICE_NOT_ALLOWED',
|
||||
'PE_MAILFIRSTACCESS',
|
||||
'PE_MAILNOTFOUND',
|
||||
'PE_PASSWORDFIRSTACCESS',
|
||||
'PE_MAILCONFIRMOK',
|
||||
'PE_RADIUSCONNECTFAILED',
|
||||
'PE_MUST_SUPPLY_OLD_PASSWORD',
|
||||
'PE_FORBIDDENIP',
|
||||
'PE_CAPTCHAERROR',
|
||||
'PE_CAPTCHAEMPTY',
|
||||
'PE_REGISTERFIRSTACCESS',
|
||||
'PE_REGISTERFORMEMPTY',
|
||||
'PE_REGISTERALREADYEXISTS',
|
||||
'PE_NOTOKEN',
|
||||
'PE_TOKENEXPIRED',
|
||||
'PE_U2FFAILED',
|
||||
'PE_UNAUTHORIZEDPARTNER',
|
||||
'PE_RENEWSESSION',
|
||||
'PE_WAIT',
|
||||
'PE_MUSTAUTHN',
|
||||
'PE_MUSTHAVEMAIL',
|
||||
'PE_SAML_SERVICE_NOT_ALLOWED',
|
||||
'PE_OIDC_SERVICE_NOT_ALLOWED',
|
||||
'PE_OID_SERVICE_NOT_ALLOWED',
|
||||
'PE_GET_SERVICE_NOT_ALLOWED',
|
||||
'PE_IMPERSONATION_SERVICE_NOT_ALLOWED',
|
||||
'PE_ISSUERMISSINGREQATTR',
|
||||
'PE_DECRYPTVALUE_SERVICE_NOT_ALLOWED',
|
||||
'PE_BADOTP',
|
||||
'PE_RESETCERTIFICATE_INVALID',
|
||||
'PE_RESETCERTIFICATE_FORMEMPTY',
|
||||
'PE_RESETCERTIFICATE_FIRSTACCESS',
|
||||
'PE_PP_NOT_ALLOWED_CHARACTER',
|
||||
'PE_PP_NOT_ALLOWED_CHARACTERS',
|
||||
'PE_UPGRADESESSION',
|
||||
'PE_NO_SECOND_FACTORS',
|
||||
'PE_BAD_DEVOPS_FILE',
|
||||
'PE_FILENOTFOUND',
|
||||
'PE_OIDC_AUTH_ERROR'
|
||||
);
|
||||
our @EXPORT_OK = ( 'portalConsts', 'HANDLER', 'URIRE', 'PE_IDPCHOICE', 'PE_SENDRESPONSE', 'PE_INFO', 'PE_REDIRECT', 'PE_DONE', 'PE_OK', 'PE_SESSIONEXPIRED', 'PE_FORMEMPTY', 'PE_WRONGMANAGERACCOUNT', 'PE_USERNOTFOUND', 'PE_BADCREDENTIALS', 'PE_LDAPCONNECTFAILED', 'PE_LDAPERROR', 'PE_APACHESESSIONERROR', 'PE_FIRSTACCESS', 'PE_BADCERTIFICATE', 'PE_NO_PASSWORD_BE', 'PE_PP_ACCOUNT_LOCKED', 'PE_PP_PASSWORD_EXPIRED', 'PE_CERTIFICATEREQUIRED', 'PE_ERROR', 'PE_PP_CHANGE_AFTER_RESET', 'PE_PP_PASSWORD_MOD_NOT_ALLOWED', 'PE_PP_MUST_SUPPLY_OLD_PASSWORD', 'PE_PP_INSUFFICIENT_PASSWORD_QUALITY', 'PE_PP_PASSWORD_TOO_SHORT', 'PE_PP_PASSWORD_TOO_YOUNG', 'PE_PP_PASSWORD_IN_HISTORY', 'PE_PP_GRACE', 'PE_PP_EXP_WARNING', 'PE_PASSWORD_MISMATCH', 'PE_PASSWORD_OK', 'PE_NOTIFICATION', 'PE_BADURL', 'PE_NOSCHEME', 'PE_BADOLDPASSWORD', 'PE_MALFORMEDUSER', 'PE_SESSIONNOTGRANTED', 'PE_CONFIRM', 'PE_MAILFORMEMPTY', 'PE_BADMAILTOKEN', 'PE_MAILERROR', 'PE_MAILOK', 'PE_LOGOUT_OK', 'PE_SAML_ERROR', 'PE_SAML_LOAD_SERVICE_ERROR', 'PE_SAML_LOAD_IDP_ERROR', 'PE_SAML_SSO_ERROR', 'PE_SAML_UNKNOWN_ENTITY', 'PE_SAML_DESTINATION_ERROR', 'PE_SAML_CONDITIONS_ERROR', 'PE_SAML_IDPSSOINITIATED_NOTALLOWED', 'PE_SAML_SLO_ERROR', 'PE_SAML_SIGNATURE_ERROR', 'PE_SAML_ART_ERROR', 'PE_SAML_SESSION_ERROR', 'PE_SAML_LOAD_SP_ERROR', 'PE_SAML_ATTR_ERROR', 'PE_OPENID_EMPTY', 'PE_OPENID_BADID', 'PE_MISSINGREQATTR', 'PE_BADPARTNER', 'PE_MAILCONFIRMATION_ALREADY_SENT', 'PE_PASSWORDFORMEMPTY', 'PE_CAS_SERVICE_NOT_ALLOWED', 'PE_MAILFIRSTACCESS', 'PE_MAILNOTFOUND', 'PE_PASSWORDFIRSTACCESS', 'PE_MAILCONFIRMOK', 'PE_RADIUSCONNECTFAILED', 'PE_MUST_SUPPLY_OLD_PASSWORD', 'PE_FORBIDDENIP', 'PE_CAPTCHAERROR', 'PE_CAPTCHAEMPTY', 'PE_REGISTERFIRSTACCESS', 'PE_REGISTERFORMEMPTY', 'PE_REGISTERALREADYEXISTS', 'PE_NOTOKEN', 'PE_TOKENEXPIRED', 'PE_U2FFAILED', 'PE_UNAUTHORIZEDPARTNER', 'PE_RENEWSESSION', 'PE_WAIT', 'PE_MUSTAUTHN', 'PE_MUSTHAVEMAIL', 'PE_SAML_SERVICE_NOT_ALLOWED', 'PE_OIDC_SERVICE_NOT_ALLOWED', 'PE_OID_SERVICE_NOT_ALLOWED', 'PE_GET_SERVICE_NOT_ALLOWED', 'PE_IMPERSONATION_SERVICE_NOT_ALLOWED', 'PE_ISSUERMISSINGREQATTR', 'PE_DECRYPTVALUE_SERVICE_NOT_ALLOWED', 'PE_BADOTP', 'PE_RESETCERTIFICATE_INVALID', 'PE_RESETCERTIFICATE_FORMEMPTY', 'PE_RESETCERTIFICATE_FIRSTACCESS', 'PE_PP_NOT_ALLOWED_CHARACTER', 'PE_PP_NOT_ALLOWED_CHARACTERS', 'PE_UPGRADESESSION', 'PE_NO_SECOND_FACTORS', 'PE_BAD_DEVOPS_FILE', 'PE_FILENOTFOUND', 'PE_OIDC_AUTH_ERROR' );
|
||||
our %EXPORT_TAGS = ( 'all' => [ @EXPORT_OK, 'import' ], );
|
||||
|
||||
our @EXPORT = qw(import PE_OK);
|
||||
|
|
|
@ -15,6 +15,7 @@ has speChars => ( is => 'rw' );
|
|||
has skinRules => ( is => 'rw' );
|
||||
has stayConnected => ( is => 'rw', default => sub { 0 } );
|
||||
has requireOldPwd => ( is => 'rw', default => sub { 1 } );
|
||||
has rememberAuthChoice => ( is => 'rw', default => sub { 0 } );
|
||||
has passwordPolicyActivation => ( is => 'rw', default => sub { 0 } );
|
||||
|
||||
sub displayInit {
|
||||
|
@ -57,6 +58,13 @@ sub displayInit {
|
|||
$self->logger->error("Bad passwordPolicyActivation rule: $error");
|
||||
}
|
||||
$self->passwordPolicyActivation($rule);
|
||||
$rule =
|
||||
HANDLER->buildSub( HANDLER->substitute( $self->conf->{rememberAuthChoiceRule} ) );
|
||||
unless ($rule) {
|
||||
my $error = HANDLER->tsv->{jail}->error || 'Unable to compile rule';
|
||||
$self->logger->error("Bad rememberAuthChoiceRule rule: $error");
|
||||
}
|
||||
$self->rememberAuthChoice($rule);
|
||||
|
||||
my $speChars =
|
||||
$self->conf->{passwordPolicySpecialChar} eq '__ALL__'
|
||||
|
@ -399,6 +407,14 @@ sub display {
|
|||
? ( STAYCONNECTED => 1 )
|
||||
: ()
|
||||
),
|
||||
(
|
||||
$self->rememberAuthChoice->( $req, $req->sessionInfo )
|
||||
? ( REMEMBERAUTHCHOICE => 1 )
|
||||
: ()
|
||||
),
|
||||
REMEMBERAUTHCHOICEDEFAULTCHECKED => $self->conf->{rememberDefaultChecked} // 0,
|
||||
REMEMBERAUTHCHOICECOOKIENAME => $self->conf->{rememberCookieName} // 'llngrememberauthchoice',
|
||||
REMEMBERAUTHCHOICETIMER => $self->conf->{rememberTimer} // 5,
|
||||
(
|
||||
$req->data->{customScript}
|
||||
? ( CUSTOM_SCRIPT => $req->data->{customScript} )
|
||||
|
|
|
@ -19,6 +19,7 @@ our @pList = (
|
|||
portalStatus => '::Plugins::Status',
|
||||
cda => '::Plugins::CDA',
|
||||
notification => '::Plugins::Notifications',
|
||||
rememberAuthChoiceRule => '::Plugins::RememberAuthChoice',
|
||||
stayConnected => '::Plugins::StayConnected',
|
||||
portalCheckLogins => '::Plugins::History',
|
||||
bruteForceProtection => '::Plugins::BruteForceProtection',
|
||||
|
|
|
@ -0,0 +1,130 @@
|
|||
# Plugin to remember which authentication method has been chosen,
|
||||
# and laun it automatically
|
||||
|
||||
package Lemonldap::NG::Portal::Plugins::RememberAuthChoice;
|
||||
|
||||
use strict;
|
||||
use Mouse;
|
||||
use Lemonldap::NG::Portal::Main::Constants qw(
|
||||
PE_OK
|
||||
PE_SENDRESPONSE
|
||||
);
|
||||
|
||||
our $VERSION = '2.0.15';
|
||||
|
||||
extends 'Lemonldap::NG::Portal::Main::Plugin';
|
||||
|
||||
# INTERFACE
|
||||
|
||||
use constant endAuth => 'storeRememberedAuthChoice';
|
||||
use constant beforeAuth => 'checkRememberedAuthChoice';
|
||||
|
||||
has rule => ( is => 'rw', default => sub { 0 } );
|
||||
|
||||
has rememberCookieName => (
|
||||
is => 'rw',
|
||||
lazy => 1,
|
||||
default => sub {
|
||||
$_[0]->conf->{rememberCookieName} // 'llngrememberauthchoice';
|
||||
}
|
||||
);
|
||||
|
||||
# Default timeout: 1 year
|
||||
has rememberCookieTimeout => (
|
||||
is => 'rw',
|
||||
lazy => 1,
|
||||
default => sub {
|
||||
$_[0]->conf->{rememberCookieTimeout} // 31536000;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
sub init
|
||||
{
|
||||
my ($self) = @_;
|
||||
|
||||
# Parse activation rule
|
||||
$self->rule(
|
||||
$self->p->buildRule( $self->conf->{rememberAuthChoiceRule}, 'rememberAuthChoiceRule' ) );
|
||||
return 0 unless $self->rule;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
sub storeRememberedAuthChoice
|
||||
{
|
||||
my ( $self, $req ) = @_;
|
||||
|
||||
# Get directly authentication choice from sessionInfo
|
||||
my $lmAuth = $req->sessionInfo->{_choice};
|
||||
# Get rememberauthchoice tick from corresponding hash
|
||||
# * req->pdata for Issuer auth modules (SAML, OIDC,...)
|
||||
# * req->data for direct auth modules (LDAP)
|
||||
my $rememberauthchoice = $req->pdata->{rememberauthchoice} ||
|
||||
$req->data->{rememberauthchoice} ||
|
||||
"";
|
||||
|
||||
if( $lmAuth )
|
||||
{
|
||||
|
||||
# Store cookie to remember the authentication choice
|
||||
if( $rememberauthchoice eq "true" )
|
||||
{
|
||||
$self->logger->warn("RememberAuthChoice: set cookie " .
|
||||
$self->rememberCookieName .
|
||||
" with authentication choice lmAuth=" .
|
||||
$lmAuth
|
||||
);
|
||||
$req->addCookie(
|
||||
$self->p->cookie(
|
||||
name => $self->rememberCookieName,
|
||||
value => $lmAuth,
|
||||
max_age => $self->rememberCookieTimeout,
|
||||
secure => $self->conf->{securedCookie},
|
||||
HttpOnly => 0, # required for cookie to be read by js
|
||||
)
|
||||
);
|
||||
}
|
||||
# Remove cookie to forget previous authentication choice
|
||||
else
|
||||
{
|
||||
|
||||
$self->logger->warn("RememberAuthChoice: Remove cookie " .
|
||||
$self->rememberCookieName );
|
||||
|
||||
$req->addCookie(
|
||||
$self->p->cookie(
|
||||
name => $self->rememberCookieName,
|
||||
value => 0,
|
||||
expires => 'Wed, 21 Oct 2015 00:00:00 GMT',
|
||||
secure => $self->conf->{securedCookie},
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return PE_OK;
|
||||
}
|
||||
|
||||
sub checkRememberedAuthChoice
|
||||
{
|
||||
my ( $self, $req ) = @_;
|
||||
|
||||
# Check if form has been sent with a rememberauthchoice tick
|
||||
my $lmAuth = $req->param('lmAuth') || "" ;
|
||||
my $rememberauthchoice = $req->param('rememberauthchoice') || "" ;
|
||||
|
||||
# If so, store rememberauthchoice tick for the endAuth endpoint
|
||||
if( $lmAuth )
|
||||
{
|
||||
# For authentication method occurring in the same request
|
||||
$req->data->{rememberauthchoice} = $rememberauthchoice;
|
||||
# For authentication method occurring in a different request
|
||||
$req->pdata->{rememberauthchoice} = $rememberauthchoice;
|
||||
}
|
||||
|
||||
return PE_OK;
|
||||
}
|
||||
|
||||
1;
|
|
@ -223,3 +223,14 @@ div.input-group > p.form-control > label {
|
|||
right: 20px;
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Hide "remember my authentication choice" timer */
|
||||
#remembertimercontainer {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Hide "remember my authentication choice" box by default */
|
||||
#globalrememberauthchoicecontainer {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
html,body{height:100%;background:radial-gradient(circle at 50% 0,#fff 0,#ddd 100%) no-repeat scroll 0 0 #ddd}#wrap{min-height:100%;height:auto;margin:0 auto -80px;padding:20px 0 80px}#footer{height:80px;background-color:#fff;background-color:rgba(255,255,255,0.9);text-align:center;padding-top:10px;overflow:hidden}#header img{background-color:#fff;background-color:rgba(255,255,255,0.8);margin-bottom:20px}.card,.navbar-light{background-color:#fff;background-color:rgba(255,255,255,0.9);background-image:none}.login,.password{text-align:center;padding:20px}div.form{margin:0 auto;max-width:330px}div.actions{margin:10px 0 0 0}div.actions a{margin-top:10px}div.actions button{margin-top:10px}.buttons{text-align:center;margin:10px 0 0 0;cursor:pointer}.btn{white-space:normal}.btn span.fa{padding-right:8px}li.ui-state-active{background-color:#fafafa;background-color:rgba(250,250,250,0.9)}#appslist,#password,#loginHistory,#logout,#oidcConsents{margin-top:20px}div.category{margin:10px 0;cursor:grab}div.application{margin:5px 0;overflow:hidden}div.application a,div.application a:hover{text-decoration:none}p.notifCheck label{margin-left:5px;margin-top:3px;display:inline-block}.notif div.form{margin 0 auto;max-width:1024px}.notif .h2,h2{font-size:1.6rem;font-weght:bold;text-align:center}.notif .h3,h3{margin-top:30px;margin-bottom:30px;font-size:1.2rem}.notif .card-title{font-size:1.7rem}img.langicon{cursor:pointer}button.idploop{max-width:300px}button.idploop img{max-height:30px}div.oidc_consent_message>ul{text-align:left;list-style:circle}@media(min-width:768px){div.application{height:80px}div.application h4.appname{margin:0}#wrap{margin:0 auto -60px}#footer{height:60px}}.hiddenFrame{border:0;display:hidden;margin:0}.noborder{border:0}.max{width:100%}.link{cursor:pointer}.nodecor:hover,.nodecor:active,.nodecor:focus{text-decoration:none}.fa.icon-blue{color:blue}.progress-bar-animated{width:100%}input.key{font-family:'password';width:100px}@font-face{font-family:'password';src:url(/static/common/fonts/password.ttf)}.info.table caption{color:black;text-align:center;caption-side:bottom}div.input-group>p.form-control{height:auto}div.input-group>p.form-control>label{display:revert;user-select:none;cursor:pointer}#btn-back-to-top{position:fixed;bottom:70px;right:20px;display:none}
|
||||
html,body{height:100%;background:radial-gradient(circle at 50% 0,#fff 0,#ddd 100%) no-repeat scroll 0 0 #ddd}#wrap{min-height:100%;height:auto;margin:0 auto -80px;padding:20px 0 80px}#footer{height:80px;background-color:#fff;background-color:rgba(255,255,255,0.9);text-align:center;padding-top:10px;overflow:hidden}#header img{background-color:#fff;background-color:rgba(255,255,255,0.8);margin-bottom:20px}.card,.navbar-light{background-color:#fff;background-color:rgba(255,255,255,0.9);background-image:none}.login,.password{text-align:center;padding:20px}div.form{margin:0 auto;max-width:330px}div.actions{margin:10px 0 0 0}div.actions a{margin-top:10px}div.actions button{margin-top:10px}.buttons{text-align:center;margin:10px 0 0 0;cursor:pointer}.btn{white-space:normal}.btn span.fa{padding-right:8px}li.ui-state-active{background-color:#fafafa;background-color:rgba(250,250,250,0.9)}#appslist,#password,#loginHistory,#logout,#oidcConsents{margin-top:20px}div.category{margin:10px 0;cursor:grab}div.application{margin:5px 0;overflow:hidden}div.application a,div.application a:hover{text-decoration:none}p.notifCheck label{margin-left:5px;margin-top:3px;display:inline-block}.notif div.form{margin 0 auto;max-width:1024px}.notif .h2,h2{font-size:1.6rem;font-weght:bold;text-align:center}.notif .h3,h3{margin-top:30px;margin-bottom:30px;font-size:1.2rem}.notif .card-title{font-size:1.7rem}img.langicon{cursor:pointer}button.idploop{max-width:300px}button.idploop img{max-height:30px}div.oidc_consent_message>ul{text-align:left;list-style:circle}@media(min-width:768px){div.application{height:80px}div.application h4.appname{margin:0}#wrap{margin:0 auto -60px}#footer{height:60px}}.hiddenFrame{border:0;display:hidden;margin:0}.noborder{border:0}.max{width:100%}.link{cursor:pointer}.nodecor:hover,.nodecor:active,.nodecor:focus{text-decoration:none}.fa.icon-blue{color:blue}.progress-bar-animated{width:100%}input.key{font-family:'password';width:100px}@font-face{font-family:'password';src:url(/static/common/fonts/password.ttf)}.info.table caption{color:black;text-align:center;caption-side:bottom}div.input-group>p.form-control{height:auto}div.input-group>p.form-control>label{display:revert;user-select:none;cursor:pointer}#btn-back-to-top{position:fixed;bottom:70px;right:20px;display:none}#remembertimercontainer{display:none}#globalrememberauthchoicecontainer{display:none}
|
|
@ -47,5 +47,93 @@ $(window).on("load", function() {
|
|||
$('.nav-item').attr( "tabIndex", 0 );
|
||||
});
|
||||
|
||||
// tick all checkboxes remembering the authentication choice
|
||||
// when global checkbox is clicked
|
||||
$("#globalrememberauthchoice").change(function() {
|
||||
var checked = this.checked;
|
||||
$( 'input[name="rememberauthchoice"]' ).each(function() {
|
||||
$( this ).val(checked);
|
||||
});
|
||||
});
|
||||
|
||||
// if rememberStopped button has been clicked, stop the timer
|
||||
// from lauching the previously remembered authentication
|
||||
$("#buttonRememberStopped").click(function() {
|
||||
var curval = $( "input#rememberStopped" ).val();
|
||||
var newval;
|
||||
if( curval != "stopped" )
|
||||
{
|
||||
newval = "stopped";
|
||||
}
|
||||
else
|
||||
{
|
||||
newval = "running";
|
||||
window.setTimeout( launchAuthenticationChoice, 0 );
|
||||
}
|
||||
// store the new value
|
||||
$( "input#rememberStopped" ).val(newval);
|
||||
$( "#remembertimercontainer" ).hide();
|
||||
$( "#globalrememberauthchoicecontainer" ).css('display', 'flex');
|
||||
});
|
||||
|
||||
// function running the previously remembered authentication choice
|
||||
// when the timer is over
|
||||
function launchAuthenticationChoice()
|
||||
{
|
||||
|
||||
var timer = $( "span#remembertimer" ).text();
|
||||
var isStopped = $( "input#rememberStopped" ).val();
|
||||
|
||||
if ( isStopped != "stopped" )
|
||||
{
|
||||
timer--;
|
||||
// display decremented timer in the appropriate html element
|
||||
$( "span#remembertimer" ).text(timer);
|
||||
|
||||
if ( timer > 0 )
|
||||
{
|
||||
// wait for another 1s
|
||||
window.setTimeout( launchAuthenticationChoice, 1000 );
|
||||
}
|
||||
else
|
||||
{
|
||||
// launch authentication choice defined in cookie
|
||||
var choiceform = "#" + $.cookie(rememberCookieName) + " form";
|
||||
$( choiceform ).submit();
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
// Check rememberauthchoice cookie
|
||||
var rememberCookieName = $( "#rememberCookieName" ).val();
|
||||
var errorCode = $( "#errormsg div span" ).attr("trmsg");
|
||||
// if this is first access
|
||||
if( errorCode == 9 )
|
||||
{
|
||||
// if there is a rememberauthchoice cookie
|
||||
if ( ! ( typeof rememberCookieName === 'undefined' ) &&
|
||||
! ( typeof $.cookie(rememberCookieName) === 'undefined' )
|
||||
)
|
||||
{
|
||||
// show timer
|
||||
$( "#remembertimercontainer" ).css('display', 'flex');
|
||||
// remember last authentication choice again
|
||||
$("#globalrememberauthchoice").prop('checked',true);
|
||||
$( 'input[name="rememberauthchoice"]' ).each(function() {
|
||||
$( this ).val('true');
|
||||
});
|
||||
// increment timer for starting to correct time
|
||||
$( "span#remembertimer" ).text( parseInt($( "span#remembertimer" ).text()) + 1 );
|
||||
// launch remembered authentication choice when timer reaches 0
|
||||
window.setTimeout( launchAuthenticationChoice, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
// display the global checkbox
|
||||
$( "#globalrememberauthchoicecontainer" ).css('display', 'flex');
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
$(window).on("load",function(){$("div.message-positive").addClass("alert-success"),$("div.message-warning").addClass("alert-warning"),$("div.message-negative").addClass("alert-danger"),$("table.info").addClass("table"),$(".notifCheck").addClass("checkbox"),$('.collapse li[class!="dropdown"]').on("click",function(){$(".navbar-toggler").hasClass("collapsed")||$(".navbar-toggler").trigger("click")}),$("#authMenu .nav-link").on("click",function(a){window.datas.choicetab=a.target.hash.substr(1)}),$("#remove2fModal").on("show.bs.modal",function(a){var t=$(a.relatedTarget),e=t.attr("device"),n=t.attr("epoch"),i=$(this);i.find(".remove2f").attr("device",e),i.find(".remove2f").attr("epoch",n)}),$(".nav-item").click(function(){$(".nav-item").attr("tabIndex",0)}),$(".nav-item").focusin(function(){$(".nav-item").attr("tabIndex",0)}),$(".nav-item").focusout(function(){$(".nav-item").attr("tabIndex",0)})});
|
||||
$(window).on("load",function(){function e(){var a=$("span#remembertimer").text();if("stopped"!=$("input#rememberStopped").val())if(a--,$("span#remembertimer").text(a),a>0)window.setTimeout(e,1e3);else{var i="#"+$.cookie(t)+" form";$(i).submit()}}$("div.message-positive").addClass("alert-success"),$("div.message-warning").addClass("alert-warning"),$("div.message-negative").addClass("alert-danger"),$("table.info").addClass("table"),$(".notifCheck").addClass("checkbox"),$('.collapse li[class!="dropdown"]').on("click",function(){$(".navbar-toggler").hasClass("collapsed")||$(".navbar-toggler").trigger("click")}),$("#authMenu .nav-link").on("click",function(e){window.datas.choicetab=e.target.hash.substr(1)}),$("#remove2fModal").on("show.bs.modal",function(e){var t=$(e.relatedTarget),a=t.attr("device"),i=t.attr("epoch"),r=$(this);r.find(".remove2f").attr("device",a),r.find(".remove2f").attr("epoch",i)}),$(".nav-item").click(function(){$(".nav-item").attr("tabIndex",0)}),$(".nav-item").focusin(function(){$(".nav-item").attr("tabIndex",0)}),$(".nav-item").focusout(function(){$(".nav-item").attr("tabIndex",0)}),$("#globalrememberauthchoice").change(function(){var e=this.checked;$('input[name="rememberauthchoice"]').each(function(){$(this).val(e)})}),$("#buttonRememberStopped").click(function(){var t,a=$("input#rememberStopped").val();"stopped"!=a?t="stopped":(t="running",window.setTimeout(e,0)),$("input#rememberStopped").val(t),$("#remembertimercontainer").hide(),$("#globalrememberauthchoicecontainer").css("display","flex")});var t=$("#rememberCookieName").val();9==$("#errormsg div span").attr("trmsg")&&(void 0!==t&&void 0!==$.cookie(t)?($("#remembertimercontainer").css("display","flex"),$("#globalrememberauthchoice").prop("checked",!0),$('input[name="rememberauthchoice"]').each(function(){$(this).val("true")}),$("span#remembertimer").text(parseInt($("span#remembertimer").text())+1),window.setTimeout(e,0)):$("#globalrememberauthchoicecontainer").css("display","flex"))});
|
||||
//# sourceMappingURL=skin.min.js.map
|
|
@ -1 +1 @@
|
|||
{"version":3,"sources":["skin.js"],"names":["$","window","on","addClass","hasClass","trigger","e","datas","choicetab","target","hash","substr","event","button","relatedTarget","device","attr","epoch","modal","this","find","click","focusin","focusout"],"mappings":"AAAAA,EAAEC,QAAQC,GAAG,OAAQ,WAGnBF,EAAE,wBAAwBG,SAAS,iBACnCH,EAAE,uBAAuBG,SAAS,iBAClCH,EAAE,wBAAwBG,SAAS,gBAEnCH,EAAE,cAAcG,SAAS,SAEzBH,EAAE,eAAeG,SAAS,YAG1BH,EAAE,mCAAmCE,GAAG,QAAS,WAC1CF,EAAE,mBAAmBI,SAAS,cACjCJ,EAAE,mBAAmBK,QAAQ,WAKjCL,EAAE,uBAAuBE,GAAG,QAAS,SAAUI,GAC3CL,OAAOM,MAAMC,UAAYF,EAAEG,OAAOC,KAAKC,OAAO,KAIlDX,EAAE,kBAAkBE,GAAG,gBAAiB,SAAUU,GAClD,IAAIC,EAASb,EAAEY,EAAME,eACjBC,EAASF,EAAOG,KAAK,UACrBC,EAAQJ,EAAOG,KAAK,SACpBE,EAAQlB,EAAEmB,MAGdD,EAAME,KAAK,aAAaJ,KAAK,SAAUD,GACvCG,EAAME,KAAK,aAAaJ,KAAK,QAASC,KAOtCjB,EAAE,aAAaqB,MAAM,WACnBrB,EAAE,aAAagB,KAAM,WAAY,KAEnChB,EAAE,aAAasB,QAAQ,WACrBtB,EAAE,aAAagB,KAAM,WAAY,KAEnChB,EAAE,aAAauB,SAAS,WACtBvB,EAAE,aAAagB,KAAM,WAAY"}
|
||||
{"version":3,"sources":["skin.js"],"names":["$","window","on","launchAuthenticationChoice","timer","text","val","setTimeout","choiceform","cookie","rememberCookieName","submit","addClass","hasClass","trigger","e","datas","choicetab","target","hash","substr","event","button","relatedTarget","device","attr","epoch","modal","this","find","click","focusin","focusout","change","checked","each","newval","curval","hide","css","prop","parseInt"],"mappings":"AAAAA,EAAEC,QAAQC,GAAG,OAAQ,WAgFnB,QAASC,KAGL,GAAIC,GAAQJ,EAAG,sBAAuBK,MAGtC,IAAkB,WAFFL,EAAG,yBAA0BM,MAQzC,GAJAF,IAEAJ,EAAG,sBAAuBK,KAAKD,GAE1BA,EAAQ,EAGTH,OAAOM,WAAYJ,EAA4B,SAGnD,CAEI,GAAIK,GAAa,IAAMR,EAAES,OAAOC,GAAsB,OACtDV,GAAGQ,GAAaG,UAlG5BX,EAAE,wBAAwBY,SAAS,iBACnCZ,EAAE,uBAAuBY,SAAS,iBAClCZ,EAAE,wBAAwBY,SAAS,gBAEnCZ,EAAE,cAAcY,SAAS,SAEzBZ,EAAE,eAAeY,SAAS,YAG1BZ,EAAE,mCAAmCE,GAAG,QAAS,WAC1CF,EAAE,mBAAmBa,SAAS,cACjCb,EAAE,mBAAmBc,QAAQ,WAKjCd,EAAE,uBAAuBE,GAAG,QAAS,SAAUa,GAC3Cd,OAAOe,MAAMC,UAAYF,EAAEG,OAAOC,KAAKC,OAAO,KAIlDpB,EAAE,kBAAkBE,GAAG,gBAAiB,SAAUmB,GAClD,GAAIC,GAAStB,EAAEqB,EAAME,eACjBC,EAASF,EAAOG,KAAK,UACrBC,EAAQJ,EAAOG,KAAK,SACpBE,EAAQ3B,EAAE4B,KAGdD,GAAME,KAAK,aAAaJ,KAAK,SAAUD,GACvCG,EAAME,KAAK,aAAaJ,KAAK,QAASC,KAOtC1B,EAAE,aAAa8B,MAAM,WACnB9B,EAAE,aAAayB,KAAM,WAAY,KAEnCzB,EAAE,aAAa+B,QAAQ,WACrB/B,EAAE,aAAayB,KAAM,WAAY,KAEnCzB,EAAE,aAAagC,SAAS,WACtBhC,EAAE,aAAayB,KAAM,WAAY,KAKnCzB,EAAE,6BAA6BiC,OAAO,WAClC,GAAIC,GAAUN,KAAKM,OACnBlC,GAAG,oCAAqCmC,KAAK,WACzCnC,EAAG4B,MAAOtB,IAAI4B,OAMtBlC,EAAE,0BAA0B8B,MAAM,WAC9B,GACIM,GADAC,EAASrC,EAAG,yBAA0BM,KAE5B,YAAV+B,EAEAD,EAAS,WAITA,EAAS,UACTnC,OAAOM,WAAYJ,EAA4B,IAGnDH,EAAG,yBAA0BM,IAAI8B,GACjCpC,EAAG,2BAA4BsC,OAC/BtC,EAAG,sCAAuCuC,IAAI,UAAW,SAkC7D,IAAI7B,GAAqBV,EAAG,uBAAwBM,KAGnC,IAFDN,EAAG,sBAAuByB,KAAK,eAKH,KAAvBf,OACiC,KAAjCV,EAAES,OAAOC,IAItBV,EAAG,2BAA4BuC,IAAI,UAAW,QAE9CvC,EAAE,6BAA6BwC,KAAK,WAAU,GAC9CxC,EAAG,oCAAqCmC,KAAK,WAC3CnC,EAAG4B,MAAOtB,IAAI,UAGhBN,EAAG,sBAAuBK,KAAMoC,SAASzC,EAAG,sBAAuBK,QAAU,GAE7EJ,OAAOM,WAAYJ,EAA4B,IAKjDH,EAAG,sCAAuCuC,IAAI,UAAW","file":"skin.min.js"}
|
|
@ -263,6 +263,7 @@
|
|||
"register":"Register",
|
||||
"registerRequestAlreadyIssued":"تم إصدار طلب تسجيل لهذا الحساب من قبل",
|
||||
"rememberChoice":"تذكر اختياري",
|
||||
"rememberTimerLabel":"s before automatic authentication",
|
||||
"remove2fWarning":"This operation cannot be undone",
|
||||
"removeOtherSessions":"إزالة الجلسات الأخرى",
|
||||
"renewSession":"Renew session",
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
"register":"Registrieren",
|
||||
"registerRequestAlreadyIssued":"Eine Registrierungsanforderung für dieses Konto wurde bereits gestellt am",
|
||||
"rememberChoice":"Meine Auswahl merken",
|
||||
"rememberTimerLabel":"s before automatic authentication",
|
||||
"remove2fWarning":"This operation cannot be undone",
|
||||
"removeOtherSessions":"Andere Sitzungen löschen",
|
||||
"renewSession":"Renew session",
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
"register":"Register",
|
||||
"registerRequestAlreadyIssued":"A register request for this account was already issued on ",
|
||||
"rememberChoice":"Remember my choice",
|
||||
"rememberTimerLabel":"s before automatic authentication",
|
||||
"remove2fWarning":"This operation cannot be undone",
|
||||
"removeOtherSessions":"Remove other sessions",
|
||||
"renewSession":"Renew session",
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
"register":"Registrar",
|
||||
"registerRequestAlreadyIssued":"Ya fue expedida una solicitud de registro para esta cuenta",
|
||||
"rememberChoice":"Recordar mi elección",
|
||||
"rememberTimerLabel":"s before automatic authentication",
|
||||
"remove2fWarning":"This operation cannot be undone",
|
||||
"removeOtherSessions":"Suprimir las otras sesiones",
|
||||
"renewSession":"Renew session",
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
"register":"Rekisteröidy",
|
||||
"registerRequestAlreadyIssued":"Tämän käyttäjätilin rekisteröintipyyntö lähetettiin jo laitteelta ",
|
||||
"rememberChoice":"Muista valintani",
|
||||
"rememberTimerLabel":"s before automatic authentication",
|
||||
"remove2fWarning":"Tätä toimenpidettä ei voi perua",
|
||||
"removeOtherSessions":"Poista muut istunnot",
|
||||
"renewSession":"Uudista istunto",
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
"register":"Enregistrer",
|
||||
"registerRequestAlreadyIssued":"Une demande de création pour ce compte a déjà été faite le ",
|
||||
"rememberChoice":"Se souvenir de mon choix",
|
||||
"rememberTimerLabel":"s avant authentification automatique",
|
||||
"remove2fWarning":"Cette action est définitive",
|
||||
"removeOtherSessions":"Fermer les autres sessions",
|
||||
"renewSession":"Renouveller la session",
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
"register":"הרשמה",
|
||||
"registerRequestAlreadyIssued":"כבר הוגשה בקשה לרישום החשבון הזה ב־",
|
||||
"rememberChoice":"שמירת הבחירה שלי",
|
||||
"rememberTimerLabel":"s before automatic authentication",
|
||||
"remove2fWarning":"פעולה זו אינה הפיכה",
|
||||
"removeOtherSessions":"הסרת הפעלות אחרות",
|
||||
"renewSession":"חידוש הפעלה",
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
"register":"Registra",
|
||||
"registerRequestAlreadyIssued":"Una richiesta di registrazione per questo conto é già stata rilasciata il",
|
||||
"rememberChoice":"Ricordarsi della mia scelta",
|
||||
"rememberTimerLabel":"s before automatic authentication",
|
||||
"remove2fWarning":"This operation cannot be undone",
|
||||
"removeOtherSessions":"Rimuovere altre sessioni",
|
||||
"renewSession":"Renew session",
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
"register":"Zarejestruj",
|
||||
"registerRequestAlreadyIssued":"Wniosek o rejestrację tego konta został już złożony w dniu ",
|
||||
"rememberChoice":"Zapamiętaj mój wybór",
|
||||
"rememberTimerLabel":"s before automatic authentication",
|
||||
"remove2fWarning":"Tej operacji nie można cofnąć",
|
||||
"removeOtherSessions":"Usuń inne sesje",
|
||||
"renewSession":"Odnów sesję",
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
"register":"Registrar",
|
||||
"registerRequestAlreadyIssued":"Um pedido de registro para esta conta já foi emitido em",
|
||||
"rememberChoice":"Lembre-se da minha escolha",
|
||||
"rememberTimerLabel":"s before automatic authentication",
|
||||
"remove2fWarning":"Esta operação não pode ser desfeita",
|
||||
"removeOtherSessions":"Remover outras sessões",
|
||||
"renewSession":"Renovar sessão",
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
"register":"Registrar",
|
||||
"registerRequestAlreadyIssued":"Um pedido de registro para esta conta já foi emitido em",
|
||||
"rememberChoice":"Lembre-se da minha escolha",
|
||||
"rememberTimerLabel":"s before automatic authentication",
|
||||
"remove2fWarning":"Esta operação não pode ser desfeita",
|
||||
"removeOtherSessions":"Remover outras sessões",
|
||||
"renewSession":"Renovar sessão",
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
"register":"Kaydol",
|
||||
"registerRequestAlreadyIssued":"Bu hesap için kayıt olma isteği zaten şu tarihte alındı:",
|
||||
"rememberChoice":"Seçimimi hatırla",
|
||||
"rememberTimerLabel":"s before automatic authentication",
|
||||
"remove2fWarning":"Bu işlem geri alınamaz",
|
||||
"removeOtherSessions":"Diğer oturumları sil",
|
||||
"renewSession":"Oturumu yenile",
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
"register":"Đăng ký",
|
||||
"registerRequestAlreadyIssued":"Yêu cầu đăng ký cho tài khoản này đã được cấp phát",
|
||||
"rememberChoice":"Hãy nhớ sự lựa chọn của tôi",
|
||||
"rememberTimerLabel":"s before automatic authentication",
|
||||
"remove2fWarning":"This operation cannot be undone",
|
||||
"removeOtherSessions":"Xóa các phiên khác",
|
||||
"renewSession":"Renew session",
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
"register":"注册",
|
||||
"registerRequestAlreadyIssued":"此账户已存在一个注册请求",
|
||||
"rememberChoice":"记住我的选择",
|
||||
"rememberTimerLabel":"s before automatic authentication",
|
||||
"remove2fWarning":"This operation cannot be undone",
|
||||
"removeOtherSessions":"移除其他会话",
|
||||
"renewSession":"更新工作階段",
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
"register":"註冊",
|
||||
"registerRequestAlreadyIssued":"此帳號的註冊請求已發出",
|
||||
"rememberChoice":"記住我的選擇",
|
||||
"rememberTimerLabel":"s before automatic authentication",
|
||||
"remove2fWarning":"This operation cannot be undone",
|
||||
"removeOtherSessions":"移除其他工作階段",
|
||||
"renewSession":"更新工作階段",
|
||||
|
|
|
@ -66,6 +66,12 @@
|
|||
|
||||
<TMPL_IF NAME="sslform">
|
||||
<TMPL_INCLUDE NAME="sslformChoice.tpl">
|
||||
|
||||
<!-- Remember my authentication choice for this module -->
|
||||
<TMPL_IF NAME="REMEMBERAUTHCHOICE">
|
||||
<input type="hidden" id="rememberauthchoice" name="rememberauthchoice" value="<TMPL_IF NAME="REMEMBERAUTHCHOICEDEFAULTCHECKED">true</TMPL_IF>" />
|
||||
</TMPL_IF>
|
||||
|
||||
</TMPL_IF>
|
||||
|
||||
<TMPL_IF NAME="gpgform">
|
||||
|
@ -92,6 +98,11 @@
|
|||
|
||||
</div>
|
||||
|
||||
<!-- Remember my authentication choice for this module -->
|
||||
<TMPL_IF NAME="REMEMBERAUTHCHOICE">
|
||||
<input type="hidden" id="rememberauthchoice" name="rememberauthchoice" value="<TMPL_IF NAME="REMEMBERAUTHCHOICEDEFAULTCHECKED">true</TMPL_IF>" />
|
||||
</TMPL_IF>
|
||||
|
||||
</TMPL_IF>
|
||||
|
||||
</form>
|
||||
|
@ -104,6 +115,34 @@
|
|||
|
||||
</div> <!-- end authMenu -->
|
||||
|
||||
<TMPL_IF NAME="REMEMBERAUTHCHOICE">
|
||||
<div class="input-group col-md-6 offset-md-3">
|
||||
|
||||
<!-- Global checkbox for remembering the authentication choice for all modules -->
|
||||
<div id="globalrememberauthchoicecontainer" class="input-group-prepend input-group">
|
||||
<div class="input-group-text">
|
||||
<input type="checkbox" id="globalrememberauthchoice" name="globalrememberauthchoice" aria-describedby="globalrememberauthchoiceLabel" <TMPL_IF NAME="REMEMBERAUTHCHOICEDEFAULTCHECKED">checked</TMPL_IF> />
|
||||
<input id="rememberCookieName" name="rememberCookieName" type="hidden" value="<TMPL_VAR NAME="REMEMBERAUTHCHOICECOOKIENAME">">
|
||||
</div>
|
||||
<p class="form-control">
|
||||
<label id="globalrememberauthchoiceLabel" for="globalrememberauthchoice" trspan="rememberChoice">Remember my choice</label>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Timer + stop button for triggering the remembered authentication choice -->
|
||||
<div id="remembertimercontainer" class="input-group">
|
||||
<p class="form-control">
|
||||
<span id="remembertimer"><TMPL_VAR NAME="REMEMBERAUTHCHOICETIMER"></span>
|
||||
<label id="rememberTimerLabel" trspan="rememberTimerLabel">s before automatic authentication</label>
|
||||
</p>
|
||||
<input id="rememberStopped" name="rememberStopped" type="hidden" value="">
|
||||
<div class="input-group-append inout-group">
|
||||
<button class="btn btn-danger" id="buttonRememberStopped"><i class="fa fa-stop-circle-o"></i> Stop</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</TMPL_IF>
|
||||
|
||||
</TMPL_IF>
|
||||
|
||||
<TMPL_IF NAME="DISPLAY_FORM">
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
use Test::More;
|
||||
use strict;
|
||||
use IO::String;
|
||||
|
||||
require 't/test-lib.pm';
|
||||
|
||||
my $res;
|
||||
my $maintests = 7;
|
||||
|
||||
my $client = LLNG::Manager::Test->new( {
|
||||
ini => {
|
||||
logLevel => 'error',
|
||||
authentication => 'Choice',
|
||||
userDB => 'Same',
|
||||
passwordDB => 'Choice',
|
||||
|
||||
authChoiceParam => 'lmAuth',
|
||||
authChoiceModules => {
|
||||
slavechoice => 'Slave;Demo;Demo',
|
||||
},
|
||||
|
||||
slaveUserHeader => 'userid',
|
||||
slaveDisplayLogo => 1,
|
||||
|
||||
rememberAuthChoiceRule => 1,
|
||||
rememberCookieName => "llngrememberauthchoice",
|
||||
rememberCookieTimeout => 31536000,
|
||||
rememberDefaultChecked => 0,
|
||||
rememberTimer => 10,
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
# Check web form
|
||||
ok( $res = $client->_get( '/', accept => 'text/html' ), 'Get authentication portal' );
|
||||
my @form = ( $res->[2]->[0] =~ m#<form.*?</form>#sg );
|
||||
ok( @form == 1, 'Display 1 choice' ) or explain( scalar(@form), 1 );
|
||||
expectForm( [ $res->[0], $res->[1], [ $form[0] ] ], undef, undef, 'lmAuth' );
|
||||
ok( $form[0] =~ /input type="hidden" id="rememberauthchoice"/ );
|
||||
|
||||
# authentication with rememberauthchoice enabled
|
||||
ok(
|
||||
$res = $client->_get( '/',
|
||||
'accept' => 'text/html',
|
||||
'query' => 'lmAuth=slavechoice&rememberauthchoice=true',
|
||||
'custom' => { 'HTTP_USERID' => 'dwho' }
|
||||
),
|
||||
'Auth query with rememberauthchoice enabled'
|
||||
);
|
||||
my $id = expectCookie( $res );
|
||||
my $remember = expectCookie( $res, "llngrememberauthchoice" );
|
||||
ok( $remember eq "slavechoice", 'Get cookie with authentication' );
|
||||
|
||||
$client->logout($id);
|
||||
|
||||
# authentication with rememberauthchoice disabled
|
||||
ok(
|
||||
$res = $client->_get( '/',
|
||||
'accept' => 'text/html',
|
||||
'query' => 'lmAuth=slavechoice&rememberauthchoice=false',
|
||||
'custom' => { 'HTTP_USERID' => 'dwho' }
|
||||
),
|
||||
'Auth query with rememberauthchoice disabled'
|
||||
);
|
||||
$id = expectCookie( $res );
|
||||
$remember = expectCookie( $res, "llngrememberauthchoice" );
|
||||
ok( $remember eq "0", 'Get cookie removal' );
|
||||
|
||||
$client->logout($id);
|
||||
|
||||
count($maintests);
|
||||
clean_sessions();
|
||||
done_testing( count() );
|
Loading…
Reference in New Issue