Compare commits

...

590 Commits

Author SHA1 Message Date
Yadd c4a5abc4e0 Fix CrowdSec plugin (#2817) 2022-11-04 11:33:28 +01:00
Yadd 46eef8a41c Update translations 2022-11-02 15:11:14 +01:00
Christophe Maudoux 0cdbe863ab Fix debian/control dependency (#2813) 2022-10-25 21:07:04 +02:00
Christophe Maudoux 1dc91f9954 Append debian/control dependency (#2814) 2022-10-25 21:02:50 +02:00
Christophe Maudoux 285c6a7c85 Append comment box (#2808) 2022-10-23 22:45:24 +02:00
Christophe Maudoux bc08b06850 Update uwsgi conf with Nginx files 2022-10-23 21:16:08 +02:00
Christophe Maudoux fdfeae7c2a Update debian control (#2813) 2022-10-23 21:12:37 +02:00
Yadd 12eeff6667 Update pl translation 2022-10-21 06:27:53 +02:00
Maxime Besson 573d4c59ba Fix upgrade note for 2.0.10 regarding skin.min.js
for users who need to upgrade from very old versions
2022-10-20 17:27:10 +02:00
Maxime Besson f6ec51fbf0 Add error message when skin is missing 2022-10-20 11:49:52 +02:00
Maxime Besson aa11de8922 Relax skin syntax in portalSkinRule (#2809) 2022-10-20 11:48:31 +02:00
Maxime Besson 0d4bea66ed Allow OverConf to pass module params 2022-10-10 17:43:04 +02:00
Maxime Besson c54b89485e Tidy 2FA code 2022-10-10 17:43:04 +02:00
Maxime Besson 012b41b2b1 add Xpath lookup method in test lib 2022-10-10 16:56:33 +02:00
Maxime Besson 5f129f90d4 Send prefix to 2FA templates 2022-10-10 16:56:33 +02:00
Maxime Besson 7bb84f5bb1 Store MIME message in smtp lib 2022-10-07 10:09:12 +02:00
Maxime Besson 8da2666acc Improve addTrEntry
Allow to set a key from another key
2022-10-06 14:48:42 +02:00
Maxime Besson ccb898f24a Fix #2802 2022-10-03 18:47:09 +02:00
Maxime Besson 579f0c70ca Merge branch 'fix-proxyrestriction-2801' into 'v2.0'
Remove broken samlIDPMetaDataOptionsAllowProxiedAuthn option

See merge request lemonldap-ng/lemonldap-ng!292
2022-10-03 15:02:17 +00:00
Maxime Besson e5515095bf Fix doc typo 2022-09-29 13:54:55 +02:00
Maxime Besson 998b38e959 Remove broken samlIDPMetaDataOptionsAllowProxiedAuthn option 2022-09-29 10:24:29 +02:00
Maxime Besson 745d1641d6 Update cli_examples to use pgjson 2022-09-26 16:54:55 +02:00
Clément OUDOT 80414acc4c Documentation for OIDC support in ITSM-NG 2022-09-23 18:49:39 +02:00
Clément OUDOT 5e26307e63 Fix typo in Humhub doc 2022-09-23 18:49:22 +02:00
Maxime Besson 9a91158378 Make test-lib more user friendly 2022-09-23 09:56:21 +02:00
Yadd 86b396ee71 Prepare transition from gsfonts to fonts-urw-base35 2022-09-22 21:08:43 +02:00
Maxime Besson 36234e6429 use macros/group ordering config in CertificateResetByMail (#2797) 2022-09-21 10:57:48 +02:00
Maxime Besson de2f0b0731 Unit test for #2799 2022-09-21 10:40:15 +02:00
Maxime Besson fe9980328b Fix autoPost detection (#2799) 2022-09-21 10:40:15 +02:00
Clément OUDOT fddab8f0f2 Update packaging files 2022-09-15 16:03:30 +02:00
Clément OUDOT 3ce98f316f Update codemeta.json 2022-09-15 16:01:34 +02:00
Clément OUDOT 3f629fbd16 Update version in main modules and Makefiles 2022-09-15 16:00:32 +02:00
Clément OUDOT a6cd9a4fe6 Update changelog 2022-09-15 15:59:15 +02:00
Yadd 58aed78070 Update version 2022-09-15 15:03:51 +02:00
Clément OUDOT 5bf73211cf Add a note in release process for unit tests 2022-09-15 14:58:44 +02:00
Maxime Besson e7b449bf04 Unit test for #2796 2022-09-15 14:25:40 +02:00
Clément OUDOT 585fae7d83 Revert "Propagate to MFA #1877"
This reverts commit 96f6667f24.
2022-09-15 12:05:23 +02:00
Yadd e939589c7e Apply multi-arch hints (liblemonldap-ng-ssoaas-apache-client-perl: foreign) 2022-09-15 10:32:33 +02:00
Clément OUDOT 30d66465ea Merge branch 'doc-mongodb-deprecated' into 'v2.0'
Notify in documentation that MongoDB is deprecated

See merge request lemonldap-ng/lemonldap-ng!290
2022-09-14 14:40:46 +00:00
Clément OUDOT b6b81786c2 Notify in documentation that MongoDB is deprecated 2022-09-14 15:57:15 +02:00
Yadd 6d9c2c6b1c Update pt_BR translation from transifex 2022-09-13 06:45:31 +02:00
Clément OUDOT 64c2d7463b Add codemeta.json in release process 2022-09-12 13:49:10 +02:00
Christophe Maudoux f9bacb3b23 Update version 2022-09-12 12:50:49 +02:00
Yadd 44871e90a1 Fix getTrOver 2022-09-11 08:45:57 +02:00
Yadd abffc5a5d5 Apply multi-arch hints 2022-09-11 08:29:23 +02:00
Yadd 1dc6303e31 Update tr translation from transifex 2022-09-11 07:50:23 +02:00
Clément OUDOT 38fbc89ea8 Update changelog 2022-09-09 19:00:25 +02:00
Clément OUDOT 4e73e3abb1 Update doc for new features in packaging 2022-09-09 18:58:05 +02:00
Clément OUDOT 79bd842424 Shorter description to avoid documentation formatting issue 2022-09-09 18:27:51 +02:00
Clément OUDOT 5d7630c43d make cpan 2022-09-09 17:01:19 +02:00
Clément OUDOT d8018977dd Update parameter list in doc 2022-09-09 16:35:56 +02:00
Maxime Besson e9187ca659 Fix doc warning 2022-09-09 15:43:40 +02:00
Clément OUDOT 20c7910e45 Update packaging files 2022-09-09 10:17:51 +02:00
Clément OUDOT 31e2defbf5 Generate changelog 2022-09-09 10:14:13 +02:00
Clément OUDOT a989ad4bc7 Upgrade notes for remember auth choice plugin (#2737) 2022-09-08 17:46:17 +02:00
Clément OUDOT 62c40d5b49 Update version in SPEC file 2022-09-07 17:03:45 +02:00
Clément OUDOT a6169c4f1a Update version in modules 2022-09-07 16:44:24 +02:00
Maxime Besson 0770678482 Fix leak in portal->templateDir (#2789) 2022-09-07 11:45:20 +02:00
Maxime Besson 5aa51054e0 Clarify doc on template overrides 2022-09-07 11:42:06 +02:00
Maxime Besson 4e0e8b6061 Fix doc markup 2022-09-07 11:42:06 +02:00
Christophe Maudoux ef3b19ea18 Append missing endpoints in doc 2022-09-07 09:21:21 +02:00
Yadd c9f68c0e96 Drop dead links 2022-09-07 08:30:07 +02:00
Yadd daebc3fb93 End of Buster backports 2022-09-07 08:18:40 +02:00
Maxime Besson a9faf589c1 Merge branch 'fix-manager-hardcoded-sfa' into 'v2.0'
Remove hardcoded 2FA types from manager

See merge request lemonldap-ng/lemonldap-ng!288
2022-09-06 12:57:43 +00:00
David Coutadeur f2762e6711 fix regex rule in documentation: need to escape the @ 2022-09-05 17:18:37 +02:00
Maxime Besson 1e8a632606 Generate list of currents registrable SFAs from manager code 2022-09-02 17:43:04 +02:00
Maxime Besson 12ca5e62b9 Allow .html routes to call a sub 2022-09-02 17:43:04 +02:00
Maxime Besson 0119e3a229 Eliminate hardcoded SFA types from manager JS 2022-09-02 17:43:04 +02:00
Maxime Besson 3ff3fa9376 Remove explicit references to 2FA types from Manager 2022-09-02 17:43:04 +02:00
Maxime Besson 389d33d542 Rename Yubikey 2FA type to Yubico OTP to avoid confusion 2022-09-02 17:40:36 +02:00
Maxime Besson dfcb11f203 Unit test for samlBuildAuthnResponse 2022-09-02 15:51:27 +02:00
Maxime Besson 6f4ae3552c Merge branch 'fix-2fa-token-timeout-2791' into 'v2.0'
Fix #2791 (broken portal after 2FA timeout)

See merge request lemonldap-ng/lemonldap-ng!287
2022-09-02 13:20:46 +00:00
Maxime Besson d6efecb6cc Fix unit tests for #2791 2022-09-02 15:03:08 +02:00
Maxime Besson 318e08ccc7 Make sure tokens handled by 2F modules are temporary sessions (#2791) 2022-09-02 10:56:38 +02:00
Maxime Besson 5e72df3f06 Do not display login form after 2FA token timeout (#2791) 2022-09-02 10:56:24 +02:00
Maxime Besson b2ccead410 Fix doc image reference 2022-09-02 10:45:24 +02:00
Maxime Besson 9a8880e3c8 Delay samlGotAuthnRequest after signature validation (#2793) 2022-09-02 10:38:27 +02:00
Yadd ce0e4ff033 Update translations 2022-08-31 16:27:01 +02:00
Christophe Maudoux 2f6d91c27b Merge branch '2674' into 'v2.0'
2674

See merge request lemonldap-ng/lemonldap-ng!286
2022-08-31 14:23:25 +00:00
Christophe Maudoux bccef05a4b make json (#2674) 2022-08-31 14:10:41 +02:00
Christophe Maudoux 40b70b17f8 Remove default value (#2674) 2022-08-31 12:10:37 +02:00
Christophe Maudoux a347014e69 Update langs & conf files & doc & test (#2674) 2022-08-30 23:17:03 +02:00
Christophe Maudoux 479a1a2ab4 Append Strict-Transport-Security option (#2674) 2022-08-30 23:15:29 +02:00
Christophe Maudoux 98328cac1c Software heritage metadata 2022-08-30 14:28:42 +02:00
Christophe Maudoux 9d40f61f80 SoftwareHeritage metadata 2022-08-30 14:03:44 +02:00
Christophe Maudoux 8cacdda5fa Fix doc 2022-08-30 00:12:09 +02:00
Christophe Maudoux c057601eb7 Merge branch '2712-2' into 'v2.0'
Resolve "2fSelfRegistration == 0 + 2fActivation == 1 leads to registrable second factor being presented every time"

See merge request lemonldap-ng/lemonldap-ng!284
2022-08-29 08:00:10 +00:00
Christophe Maudoux df722265dc Typo (#2712) 2022-08-28 23:33:39 +02:00
Christophe Maudoux c9449ed41d Fix unit test (#2712) 2022-08-28 23:23:32 +02:00
Christophe Maudoux 3d5e7f8b05 Do not check selfRegistration (#2712) 2022-08-28 23:15:04 +02:00
Christophe Maudoux 4b99371853 Fix doc & typos 2022-08-28 00:48:13 +02:00
Christophe Maudoux 13120fd1e2 Remove dead code 2022-08-28 00:48:13 +02:00
Christophe Maudoux 8ee7bc8e0b Re-order options 2022-08-28 00:48:13 +02:00
Maxime Besson ef7f6b43e3 Fix space handling in status URI (#2787) 2022-08-26 16:13:13 +02:00
Maxime Besson 621c88535a Merge branch 'fix-mail-trover-2772-2773' into 'v2.0'
Fix translation overrides

See merge request lemonldap-ng/lemonldap-ng!282
2022-08-25 14:58:02 +00:00
Maxime Besson 17800cd00b Document changes from #2772 #2773 2022-08-24 15:46:38 +02:00
Maxime Besson b662e9b5b6 Merge branch 'hogsim-v2.0-patch-40626' into 'v2.0'
Added info on group from Active Directory

See merge request lemonldap-ng/lemonldap-ng!270
2022-08-24 12:15:41 +00:00
Maxime Besson 5c3f2823e9 Documentation for #2780 2022-08-24 14:10:23 +02:00
Maxime Besson e65ff90536 Update package dependencies (#2780) 2022-08-24 14:10:23 +02:00
Maxime Besson b764920a43 Unit test for #2780 2022-08-24 14:10:23 +02:00
Maxime Besson 798c80fbf1 Add merge subcommand to lemonldap-ng-cli (#2780) 2022-08-24 14:10:23 +02:00
Christophe Maudoux 0c1e58da66 Typos 2022-08-22 21:25:28 +02:00
Maxime Besson ec1a1c11b8 Fix skin translations overriding llng.ini messages (#2773) 2022-08-22 18:55:34 +02:00
Maxime Besson 84d3ca2b89 Use skin translation files when sending mail (#2772) 2022-08-22 18:55:34 +02:00
Yadd e7d25fa403 Add missing translation files 2022-08-21 19:54:39 +02:00
Yadd 7f21896902 Update translations from transifex 2022-08-21 19:43:32 +02:00
Christophe Maudoux a4a57f7e87 Typos 2022-08-19 22:28:19 +02:00
Clément OUDOT 2dec1987c1 Merge branch 'rememberAuthChoice' into 'v2.0'
add RememberAuthChoice Plugin (references #2737)

See merge request lemonldap-ng/lemonldap-ng!261
2022-08-19 09:21:33 +00:00
Clément OUDOT 8ac1d4b0e9 Merge branch '2770-handler-redirection-port' into 'v2.0'
clarify which port to use for handler redirection in the documentation (#2770)

See merge request lemonldap-ng/lemonldap-ng!276
2022-08-19 09:20:50 +00:00
Christophe Maudoux 613b442473 Typos 2022-08-16 13:09:27 +02:00
Maxime Besson ee46c5c6a7 Add an option to change the doc URL prefix (#2285) 2022-08-12 10:05:39 +02:00
Maxime Besson b0c53126ee Allow portal app to be chosen through LLTYPE (#2285)
This lets the admin be more explicit about routing.
Since 2.0 we have a single entry point for each component, we don't
really need to dynamically load psgi files.
2022-08-12 09:28:40 +02:00
Maxime Besson 9d569817bd Fix use of SCRIPTNAME in templates (#2650) 2022-08-12 09:09:22 +02:00
Maxime Besson bc588c8b33 Remove broken window.data.scriptname (#2650) 2022-08-12 09:09:22 +02:00
Maxime Besson 1986f730a7 Fix usage of script_name (#2650) 2022-08-12 09:09:22 +02:00
Maxime Besson f4d5ac0e4f Remove dead code (#2650) 2022-08-12 09:09:22 +02:00
Maxime Besson 4fc253926f Handle empty SCRIPT_NAME (#2650) 2022-08-12 09:09:22 +02:00
Maxime Besson 0e93fc6556 Fix #2785 2022-08-11 14:01:40 +02:00
Maxime Besson 1cdc9640ba Expose field name to template when building history (#2784) 2022-08-09 14:53:13 +02:00
Maxime Besson 55d46a1731 Make _2f variable available in login history in case of failure (#2726) 2022-08-09 14:23:35 +02:00
Christophe Maudoux 2ab940840e Sort done notifications and convert epoch into local date (#2782) 2022-08-05 00:03:42 +02:00
David Coutadeur a99dbbe998 rememberAuthChoice: resolve conflicts with 2.0 branch (#2737) 2022-07-29 13:18:05 +00:00
Yadd e321b1ebed Update INSTALL file (Closes: #2707) 2022-07-28 17:58:12 +02:00
Yadd a8254dec1c Update versions 2022-07-28 12:42:15 +02:00
Yadd b4ff23d9b2 Fix defaultLogger for FastCGI server (Closes: #2769) 2022-07-28 12:11:16 +02:00
Yadd 59c781b393 Improve session destroy propagation (#2758) 2022-07-28 11:35:48 +02:00
Yadd 61a913b8c0 Fix $ENV{LLNG_DEFAULTLOGGER} for FastCGI server (Closes: #2769) 2022-07-28 11:24:25 +02:00
Yadd baa3d6da1b Declare compliance with Debian policy 4.6.1 2022-07-28 10:56:51 +02:00
Yadd d8411f8d9a Update Debian versions support 2022-07-28 10:54:38 +02:00
Yadd 2868f94923 Fix CVE list 2022-07-28 10:31:07 +02:00
Yadd e013e92217 Update Ubuntu versions 2022-07-28 10:28:17 +02:00
Maxime Besson 85888a9986 Unit test for #2615 2022-07-21 16:04:16 +02:00
Maxime Besson 67ee7b21ba Fix Kerberos session upgrade/renew (#2615) 2022-07-21 16:04:16 +02:00
Maxime Besson c4837f82fd Merge branch 'refactor-importmetadata' into 'v2.0'
Refactor importmetadata

See merge request lemonldap-ng/lemonldap-ng!257
2022-07-21 13:58:51 +00:00
Yadd 4104e5a933 Update tr translation from transifex 2022-07-20 23:30:37 +02:00
Christophe Maudoux fede7f01d3 Merge branch '2775' into 'v2.0'
Allow to continue notification process with JSON response

See merge request lemonldap-ng/lemonldap-ng!279
2022-07-20 07:45:40 +00:00
Christophe Maudoux 6257e86301 Update doc (#2775) 2022-07-19 20:32:12 +02:00
Christophe Maudoux 6b4c7d5272 Append unit test (#2775) 2022-07-19 20:02:22 +02:00
Christophe Maudoux df6727ffbd Return ciphered id in JSON response if notif is pending 2022-07-18 23:36:22 +02:00
Christophe Maudoux e05b51c9aa Perl critic 2022-07-18 23:35:37 +02:00
Maxime Besson 6e7fd58113 Include extra keys in oidcGenerateUserInfoResponse (#2725) 2022-07-18 17:59:18 +02:00
Yadd 569f38fc92 Update fi translation 2022-07-16 07:59:37 +02:00
Yadd 3e1655f2b8 languages 2022-07-14 07:23:11 +02:00
Yadd a3abc17103 Fix Debian install (#2739) 2022-07-14 07:09:24 +02:00
Clément OUDOT 74fdd88338 Merge branch 'apache-ssoaas-client-2739' into 'v2.0'
Add new liblemonldap-ng-ssoaas-apache-client-perl package (#2739)

See merge request lemonldap-ng/lemonldap-ng!259
2022-07-13 16:09:41 +00:00
Clément OUDOT 05d379e3cb Update spec file for SSOaaS Apache Client 2022-07-13 17:58:41 +02:00
Clément OUDOT 2bb7a1dbfe Merge branch 'v2.0' into apache-ssoaas-client-2739 2022-07-13 17:49:35 +02:00
Maxime Besson fef3f2e1db Merge branch 'fix-test-call-stack' into 'v2.0'
Correctly report the calling location in test functions

See merge request lemonldap-ng/lemonldap-ng!278
2022-07-12 14:43:10 +00:00
Maxime Besson 5a47d7e9bc Correctly report the calling location in test functions
With this change, failure in a test lib function (expectForm,
expectJWT...) will be reported at the calling location in the original
*.t test file, instead of being reported in the test lib

    t/30-SAML-ReAuth-with-choice.t .. 1/?
    #   Failed test ' URI match'
>>> #   at t/30-SAML-ReAuth-with-choice.t line 72.
2022-07-12 16:14:56 +02:00
Maxime Besson e41f55bcb6 Merge branch '2746-SAML-metadata-without-SingleLogoutService' into 'v2.0'
#2746 do not proceed to logout if no logoutService is defined into SAML MD

See merge request lemonldap-ng/lemonldap-ng!272
2022-07-12 08:41:20 +00:00
Maxime Besson a62abf7bc3 update manifest 2022-07-11 09:23:26 +02:00
Maxime Besson 0ddabc96f6 Use azp instead of aud (#2607) 2022-07-11 09:18:01 +02:00
Maxime Besson 550ac3162a Api doc for #2607 2022-07-11 09:17:03 +02:00
alc f40278c940 #2607 adding doc part about logout confirmation bypass parameter 2022-07-08 17:10:38 +02:00
alc a707cc13a5 Test checking post logout redirect failure when URI is not allowed 2022-07-08 17:10:38 +02:00
alc 47866fba35 #2607 Adding test about OIDC OP logout confirmation bypass when initiated by RP 2022-07-08 16:44:35 +02:00
alc b2edef5ed7 #2607 Adding a bypass logout confirmation parameter into manager 2022-07-08 16:44:35 +02:00
alc 8ae0ebb9db #2607 Adding the possibility to bypass logout confirm when initiated by RP 2022-07-08 16:44:27 +02:00
David Coutadeur f9ec2984e3 clarify which port to use for handler redirection in the documentation (#2770) 2022-07-08 14:32:11 +00:00
Clément OUDOT 4601879832 Merge branch 'issue-2690-2FA-logo-label' into 'v2.0'
Fix for #2690

See merge request lemonldap-ng/lemonldap-ng!275
2022-07-07 12:16:13 +00:00
Maxime Besson 1c79cc3316 Fix doc reference 2022-07-07 12:07:27 +02:00
Maxime Besson fb2da6634a unit test for #2690 2022-07-07 12:05:54 +02:00
Maxime Besson 8562916f74 Upgrade doc for #2690 2022-07-07 11:54:17 +02:00
Clément OUDOT 4896e5de64 Override logo and label in 2fregisters template (#2690) 2022-07-06 19:55:28 +02:00
Yadd 0fffe97e99 Merge branch 'variables-placeholder-2491' into 'v2.0'
Variables placeholder in configuration

See merge request lemonldap-ng/lemonldap-ng!273
2022-07-01 14:12:22 +00:00
Christophe Maudoux 0576212979 Append extended conversion functions compliant with jail (#2624) 2022-06-30 23:14:16 +02:00
Yadd 8c020cead8 Add doc (#2491) 2022-06-29 14:51:55 +02:00
Yadd 4c2dfbdda8 Accept environment variables placeholder in configuration (#2491), TODO: doc 2022-06-28 16:39:08 +02:00
Christophe Maudoux 0831143a6b Append debug log 2022-06-27 22:45:21 +02:00
Maxime Besson 1322d78065 Merge branch 'fix-session-refresh-2713' into 'v2.0'
Use OIDC Refresh tokens for session refresh

See merge request lemonldap-ng/lemonldap-ng!268
2022-06-27 09:40:19 +00:00
Maxime Besson 7c5bbfd563 Unit test for #2713 2022-06-27 11:23:49 +02:00
Maxime Besson 9804c5674a Update doc for #2713 2022-06-27 11:23:49 +02:00
Maxime Besson 0631d35afd Update manager display for (#2713) 2022-06-27 11:23:49 +02:00
Maxime Besson 96ef83893d Update oidc tokens during sessions refresh (#2713) 2022-06-27 11:23:49 +02:00
Maxime Besson f8d1d0fc5f OIDC: make getUser optionally use Refresh Tokens (#2713) 2022-06-27 11:23:49 +02:00
Maxime Besson b3b29508d3 Store refresh token and AT expiration (#2713) 2022-06-27 11:23:49 +02:00
Maxime Besson 4b9f788bf9 Unit tests for #2762 2022-06-27 11:06:07 +02:00
Maxime Besson 181f8c4be1 Update mail2f to use code2f lib (#2762) 2022-06-27 11:06:07 +02:00
Maxime Besson 93cb4df897 Add rest2F code activation in manager (#2762) 2022-06-27 11:06:07 +02:00
Maxime Besson 20d994ccac Update REST2F to use Code2F lib (#2762) 2022-06-27 11:06:07 +02:00
Maxime Besson ee05bb5c8a Split Ext2F into a common lib (Code2F) + specific code (#2762) 2022-06-27 11:06:07 +02:00
Maxime Besson 9ef3a4b839 Manager options for #2762 2022-06-27 11:06:07 +02:00
Maxime Besson 68a80daae4 Translations for #2762 2022-06-27 11:06:07 +02:00
Maxime Besson 5ce00a759b Documentation for #2762 2022-06-27 11:06:07 +02:00
Maxime Besson 5d80b47570 Update templates for #2762 2022-06-27 11:06:07 +02:00
Maxime Besson 31db698df0 Update Ext2F to support resend code (#2762) 2022-06-27 11:06:07 +02:00
alc 6433a0e75b #2746 do not proceed to logout if no logoutService is defined into SAML MD 2022-06-24 18:40:50 +02:00
Yadd 86e572db52 Update tr translation from transifex 2022-06-23 14:07:07 +02:00
Yadd 3c6bb15b34 Update Node.js handler doc (#2764) 2022-06-23 12:27:35 +02:00
Yadd 46d43e69d9 Use Perltidy 20220217 (Closes: #2765) 2022-06-23 12:12:25 +02:00
Christophe Maudoux c0803bc306 Update code 2022-06-20 00:18:37 +02:00
Christophe Maudoux aedda63b3e Remove double entry (#2749) 2022-06-19 23:26:16 +02:00
Maxime Besson 4e29b8e61a Run forAuthUser when serving /ping 2022-06-19 15:24:59 +02:00
Maxime Besson 87a91f222f Remove dead code in Issuer::OIDC 2022-06-19 15:24:59 +02:00
Maxime Besson 3ef3aac9c7 Refactor newAccessToken 2022-06-19 15:24:59 +02:00
Maxime Besson 818143311c Refactor call to token endpoint 2022-06-19 15:24:59 +02:00
Maxime Besson 5ee334dbf3 Documentation for OIDC refresh hooks (#2768) 2022-06-19 12:02:31 +02:00
Maxime Besson d3cb90a1cd Unit test for refresh token hooks (#2768) 2022-06-19 12:02:31 +02:00
Maxime Besson a868f2696f Add refresh token hooks (#2768) 2022-06-19 12:02:31 +02:00
Christophe Maudoux a9941e043f Append an option to customize Manager CSS (#2761) 2022-06-18 18:53:57 +02:00
Christophe Maudoux 7f62ad0469 Revert "Append option to change banner color (#2761)"
This reverts commit d843bea529.
2022-06-18 18:53:57 +02:00
Christophe Maudoux fbb2013e6b Code refactoring 2022-06-18 18:53:57 +02:00
Christophe Maudoux 7ad7ce8bac Pass encryption key to custom functions + Update doc 2022-06-18 18:53:57 +02:00
Christophe Maudoux 2f1d2a5e3b Code refactoring (#2749) 2022-06-18 18:53:57 +02:00
Yadd cc3f433136 Import polish translations from transifex 2022-06-18 07:44:40 +02:00
Clément OUDOT 7e8dc0f109 Update doc for REST service (#2709) 2022-06-17 17:35:06 +02:00
Maxime Besson 77557c246d Merge branch 'fix-captcha-api-2692' into 'v2.0'
New Captcha API

See merge request lemonldap-ng/lemonldap-ng!262
2022-06-17 14:31:13 +00:00
Maxime Besson 67ebefd137 Document new Captcha API (#2692) 2022-06-17 16:19:29 +02:00
Maxime Besson b4d0082e5c Add manager options for custom captcha module (#2692) 2022-06-17 15:38:57 +02:00
Maxime Besson aca5468100 Add unit test for old Captcha API (#2692) 2022-06-17 15:38:05 +02:00
Maxime Besson 7817a1b544 Update templates for new Captcha API (#2692) 2022-06-17 15:38:05 +02:00
Maxime Besson aef1ebc348 Fix unit tests for new Captcha API (#2692)
New API does not differentiate between empty and wrong captcha
2022-06-17 15:38:05 +02:00
Maxime Besson c6931ccb54 Update Portal plugins to new Captcha API (#2692) 2022-06-17 15:38:05 +02:00
Maxime Besson ef134f8ce1 Implement new Captcha API in portal (#2692) 2022-06-17 15:38:05 +02:00
Maxime Besson fc626c752a Split SecurityImage Captcha into a dedicated module (#2692)
Lib::Captcha is now only a compatibility wrapper
2022-06-17 15:38:05 +02:00
Clément OUDOT 1fbe1150f9 Update META files 2022-06-17 10:05:28 +02:00
Clément OUDOT 1d140efa99 Add MIME::Entity requirement (#2710) 2022-06-17 10:05:15 +02:00
Simon Hoggart c0483c3d1f Added info on group from Active Directory 2022-06-16 15:51:15 +00:00
Maxime Besson b666f1416a Clarify outgoing proxy documentation (#2715) 2022-06-16 16:40:31 +02:00
Maxime Besson 23bc481c0f Doc for JQuery events 2022-06-16 16:32:14 +02:00
Maxime Besson 9674510863 add mfaDeleted event (#2756) 2022-06-16 16:32:14 +02:00
Maxime Besson 0a1783f165 add mfaAdded js event (#2756) 2022-06-16 16:32:14 +02:00
Maxime Besson cd41ba8872 Merge branch 'fix-2fa-timeout-2757' into 'v2.0'
Add specific 2FA timeout (#2757)

See merge request lemonldap-ng/lemonldap-ng!269
2022-06-16 12:33:19 +00:00
Maxime Besson d1661712ae Add warning to TOTP docs 2022-06-15 15:54:44 +02:00
Maxime Besson fd8c3b1b61 Fix #2708 2022-06-14 14:48:46 +02:00
Christophe Maudoux d843bea529 Append option to change banner color (#2761) 2022-06-04 23:46:05 +02:00
Christophe Maudoux 651beaf130 Improve code 2022-06-03 19:27:06 +02:00
Maxime Besson 3f783f4805 Unit test for #2760 2022-06-03 17:42:29 +02:00
Maxime Besson e27f0b6b10 Fix #2760 2022-06-03 17:42:29 +02:00
Maxime Besson 095f69cd49 Unit test for #2757 2022-06-03 15:35:21 +02:00
Maxime Besson 828fb10389 Default 2FA token to sfLoginTimeout (#2757) 2022-06-03 15:35:21 +02:00
Maxime Besson a23db69545 Add sfLoginTimeout option in manager (#2757) 2022-06-03 15:35:19 +02:00
Christophe Maudoux d80d66e07a Update unit test (#2759) 2022-06-03 09:31:24 +02:00
Christophe Maudoux f0d102a6bb Fix debug log 2022-06-02 23:39:18 +02:00
Christophe Maudoux 78bd430057 Append go-to-top button & Doc (#2759) 2022-06-02 23:39:00 +02:00
Clément OUDOT 91cff59628 Fix display of error codes in doc 2022-06-01 12:04:39 +02:00
Maxime Besson d7ed5c9e35 Relax detection of client authentication type (#2757) 2022-05-25 15:32:32 +02:00
Clément OUDOT 3a82e3af7b Merge branch 'feature/v2.0/support-ldap-uris' into 'v2.0'
Support TLS parameters for ldaps URIs

See merge request lemonldap-ng/lemonldap-ng!256
2022-05-23 08:52:01 +00:00
Eero Häkkinen 91bf5323a5 Support TLS parameters for ldaps URIs 2022-05-20 21:53:06 +03:00
Maxime Besson d832263129 Merge branch 'fix-refactor-2f-mini' into 'v2.0'
Refactor WebAuthn to share some functions with other 2F plugins

See merge request lemonldap-ng/lemonldap-ng!266
2022-05-20 07:50:09 +00:00
Christophe Maudoux ac429ec270 Append debug log 2022-05-19 23:22:19 +02:00
Christophe Maudoux d40459b9b7 Improve code 2022-05-19 23:21:30 +02:00
Christophe Maudoux 82c10e3ecd Typos (#2753) 2022-05-19 23:20:32 +02:00
Yadd c31fb38d7b Update pl translation from transifex 2022-05-19 17:17:58 +02:00
Maxime Besson 694fb4e440 Merge branch 'fix-idprules-oidc-2753' into 'v2.0'
Add IDP resolution rules for CAS/OIDC (#2753)

See merge request lemonldap-ng/lemonldap-ng!267
2022-05-19 15:00:44 +00:00
Maxime Besson 4edd5332bb Unit test for #2753 2022-05-18 11:35:02 +02:00
Maxime Besson a09072c7ed Documentation for #2753 2022-05-18 11:35:02 +02:00
Maxime Besson e90f16ade6 Add manager options for CAS/OIDC resolution rules (#2753) 2022-05-18 11:32:04 +02:00
Maxime Besson 5e210651aa Add CAS server resolution rules (#2753) 2022-05-18 11:32:04 +02:00
Maxime Besson 3428cb981f Add OP resolution rules (#2753) 2022-05-18 11:32:04 +02:00
Clément OUDOT 3fe037c226 Better look for remember timer box 2022-05-17 15:32:07 +02:00
David Coutadeur ed03ce6a8e rememberAuthChoice: resolve conflicts with 2.0 branch (#2737) 2022-05-17 09:57:45 +00:00
Christophe Maudoux 8b968b5096 Improve doc 2022-05-16 23:09:27 +02:00
Christophe Maudoux 1cee69ed12 Update links 2022-05-16 23:07:16 +02:00
Christophe Maudoux 17328aa2aa Append favicon option (#2750) 2022-05-16 22:32:11 +02:00
Christophe Maudoux 91a5aabf0b Merge branch '2745' into 'v2.0'
Use portalEnablePasswordDisplay option in password change/reset forms

See merge request lemonldap-ng/lemonldap-ng!265
2022-05-16 17:21:37 +00:00
David Coutadeur ee2e042fc0 rememberAuthChoice: fix timer to really launch authent at 0 (#2737) 2022-05-16 15:36:34 +00:00
David Coutadeur dfe8aebf33 rememberAuthChoice: hide rememberAuthChoice checkbox when timer is active (#2737) 2022-05-16 15:09:26 +00:00
Clément OUDOT 3b0a928ba6 Fix some typos in embedded doc 2022-05-16 13:38:52 +00:00
Maxime Besson c85ade2e27 perldoc for 2fDevices lib 2022-05-16 14:21:53 +02:00
Maxime Besson 0f6753d188 Refactor Webauthn 2022-05-16 14:21:53 +02:00
Maxime Besson 21745359a2 Fix #2716 2022-05-16 14:21:53 +02:00
Maxime Besson cc5435015d Extract 2F common functions into lib 2022-05-16 14:21:53 +02:00
Christophe Maudoux 1976e3e44b Use standard HTML attribute + update unit tests (#2745) 2022-05-16 13:38:23 +02:00
David Coutadeur 8f4eb83a2e rememberAuthChoice: reconciliation with v2.0 branch (#2737) 2022-05-16 10:06:23 +00:00
David Coutadeur fe6a762f1f rememberAuthChoice: fix default values + prepare reconciliation with v2.0 (#2737) 2022-05-16 10:02:15 +00:00
Christophe Maudoux 5a29ce8ffe Update unit tests 2022-05-16 00:09:27 +02:00
Christophe Maudoux 2ea240c25c Improve template 2022-05-15 23:58:24 +02:00
Christophe Maudoux f59d245ff4 Clean code (#2746) 2022-05-15 23:41:29 +02:00
Christophe Maudoux 52bfd9f2c8 Improve unit test (#2745) 2022-05-15 23:41:23 +02:00
Christophe Maudoux a3c64ff3d7 Update unit test (#2745) 2022-05-15 12:08:30 +02:00
Christophe Maudoux e522ccb29e Propagate do not store password option to mail template (#2745) 2022-05-15 12:04:45 +02:00
Christophe Maudoux c3b58f78fd Fix coffee class toggle (#2745) 2022-05-15 12:03:57 +02:00
Christophe Maudoux 82d3d26eb5 Use option for mail reset (#2745) 2022-05-15 00:59:40 +02:00
Christophe Maudoux c5c1d0fb1c Improve coffee (#2745) 2022-05-15 00:58:41 +02:00
Christophe Maudoux 937706a1a7 Update templates (#2745) 2022-05-15 00:58:11 +02:00
Christophe Maudoux a303d96a7e Append logo (#2745) 2022-05-14 23:24:15 +02:00
Christophe Maudoux 6f6c87fcdf Append logo (#2745) 2022-05-14 23:24:01 +02:00
Christophe Maudoux 3d10995b0b Merge branch '2733' into 'v2.0'
Fix __ALL__ special characters with password reset by mail

See merge request lemonldap-ng/lemonldap-ng!264
2022-05-14 20:05:53 +00:00
Christophe Maudoux ecadbdf418 Merge branch 'v2.0' into 2733 2022-05-14 11:04:08 +02:00
Christophe Maudoux 3fc401bf79 Improve doc 2022-05-13 23:42:29 +02:00
Christophe Maudoux 46c0cdd1bb Update doc 2022-05-13 23:41:18 +02:00
Christophe Maudoux 7424751919 Fix regex generator (#2733) 2022-05-13 23:28:09 +02:00
Christophe Maudoux 5490f60f74 Improve unit tests (#2733) 2022-05-13 23:27:52 +02:00
Christophe Maudoux dcc6f2cbc9 Display policy if enabled (#2733) 2022-05-13 22:08:28 +02:00
Christophe Maudoux 1bc427043a Update doc (#2733) 2022-05-13 00:22:10 +02:00
Christophe Maudoux a79d783257 Display password policy & use it to compile password regex (#2733) 2022-05-13 00:21:53 +02:00
Christophe Maudoux 3620725787 Improve log 2022-05-13 00:18:32 +02:00
Christophe Maudoux c979adb9d2 Display password policy only if enabled (#2733) 2022-05-13 00:18:32 +02:00
Christophe Maudoux ba9cb5e1e5 Improve doc 2022-05-13 00:15:48 +02:00
Clément OUDOT a9092eaa3f Remove debug code 2022-05-12 18:32:31 +02:00
Clément OUDOT 06682bf976 Remember if the checkbox was checked 2022-05-12 17:49:46 +02:00
Clément OUDOT 97021346ee Fix version of selinux package dependency (#2749) 2022-05-09 14:36:03 +00:00
Maxime Besson 727afeefd2 Update session display in manager for #2726 2022-05-02 17:36:22 +02:00
Maxime Besson b4276b7c6a Doc for #2726 2022-05-02 17:36:22 +02:00
Maxime Besson 4a0ba0fea9 Unit tests for #2726 2022-05-02 17:36:22 +02:00
Maxime Besson 9da6310037 Add method in test lib to check session attributes 2022-05-02 17:36:22 +02:00
Maxime Besson ef295ddd55 Add _2f session key after 2FA success (#2726) 2022-05-02 17:36:22 +02:00
Maxime Besson 64d8dcb793 Add log when 2FA is attempted (#2732) 2022-05-02 17:36:22 +02:00
Christophe Maudoux ab8cc97a52 Fix warning 2022-04-30 10:19:39 +02:00
Christophe Maudoux 96f6667f24 Propagate to MFA #1877 2022-04-30 10:19:39 +02:00
Clément OUDOT 2669b4143d Fix CLI example for CAS application doc 2022-04-29 11:50:18 +02:00
Clément OUDOT 1d597f64e5 Documentation for auth/user/password REST services 2022-04-27 12:31:50 +02:00
Maxime Besson 89083bde9f Doc for importMetadata config (#2720) 2022-04-27 10:11:50 +02:00
Maxime Besson d2dce85e8c Unit tests for importMetadata 2022-04-27 10:11:50 +02:00
Maxime Besson 27580ea4de Refactor importMetadata (#2720) 2022-04-27 10:11:45 +02:00
Maxime Besson 0b1226124b Allow reading of CLI options from a conf file (#2720) 2022-04-27 10:10:23 +02:00
Maxime Besson db6a6e44db Fix typo in importMetadata #2724 2022-04-27 10:10:23 +02:00
Maxime Besson 150a90dfb8 avoid duplicates in importMetadata (#2719) 2022-04-27 10:10:23 +02:00
Clément OUDOT 411c78c880 Fix values override in auth combination doc 2022-04-27 09:45:13 +02:00
Maxime Besson 826308fbbf Fix check after saveConf (#2742) 2022-04-26 19:09:18 +02:00
Christophe Maudoux 9314c2f356 Improve ServiceToken doc 2022-04-23 17:17:24 +02:00
David Coutadeur 901a6d3697 add RememberAuthChoice Plugin (references #2737) 2022-04-20 17:36:33 +00:00
Clément OUDOT c73188edf6 Documentation to connect Sympa with CAS protocol 2022-04-20 16:42:27 +02:00
Maxime Besson bc9698c660 Fix icons in register done email 2022-04-20 09:52:54 +02:00
Maxime Besson c93330e864 Merge branch 'fix-doc-sources-2738' into 'v2.0'
improve doc package

See merge request lemonldap-ng/lemonldap-ng!260
2022-04-12 14:13:48 +00:00
Maxime Besson 697f44d200 improve doc package 2022-04-12 14:13:48 +00:00
Yadd ac105851ff make manifest 2022-04-08 12:16:54 +02:00
Yadd 713144ea3d Add new liblemonldap-ng-ssoaas-apache-client-perl package (#2739) 2022-04-08 12:15:00 +02:00
Yadd 5783a2d299 Little makefile error 2022-04-08 12:10:47 +02:00
Christophe Maudoux 04da19f0c8 Typos 2022-04-07 22:59:20 +02:00
Christophe Maudoux 89e389998d Pass SSL options to DevOps Handler UA 2022-04-07 22:39:43 +02:00
Christophe Maudoux 2563110097 Typos 2022-04-06 22:59:05 +02:00
Christophe Maudoux 7b55ad05ae Harmonize DevOps doc 2022-04-06 22:47:09 +02:00
Christophe Maudoux d2df7a314e Fix doc indentation 2022-04-05 23:46:23 +02:00
Christophe Maudoux da7fd84487 Update DevOps web server template
Update DevOps web server template
2022-04-05 23:34:49 +02:00
Christophe Maudoux aec875359f Skip DevOps Handler if no vhost provided 2022-04-05 23:32:36 +02:00
Christophe Maudoux d4b5608886 Typos 2022-04-05 23:32:36 +02:00
Maxime Besson 788450d502 NameID is not long enough by default, leading to silent corruption 2022-04-05 11:01:36 +02:00
Maxime Besson 5723359298 Fix error in client_credentials doc 2022-04-04 09:03:21 +02:00
Maxime Besson 77793abc6f Merge branch 'connectivity-issues-AD' into 'v2.0'
Fix init of ::Portal::Password::AD (#2735)

See merge request lemonldap-ng/lemonldap-ng!258
2022-04-01 12:18:42 +00:00
David Coutadeur e6cdeba1ef Fix init of ::Portal::Password::AD (#2735) 2022-03-31 09:51:17 +00:00
Clément OUDOT 1e26cc2e62 doc: missing semicolon in Browseable MySQL session backend 2022-03-23 12:13:09 +01:00
Clément OUDOT 92f89d4b1c doc: fix module name in Browseable MySQL session backend 2022-03-23 12:12:41 +01:00
Maxime Besson bfd8e382c4 Fix unit test for #2730 2022-03-18 13:00:39 +01:00
Maxime Besson e1f6534bbe Add auth oidc hooks (#2730)
new hooks:
    oidcGenerateAuthenticationRequest
    oidcGenerateTokenRequest
    oidcGotIDToken
    oidcGotUserInfo
2022-03-18 11:59:10 +01:00
Maxime Besson 3bcc1870be Documentation for OIDC auth hooks (#2730) 2022-03-18 11:59:10 +01:00
Maxime Besson fefc81d5fa Unit tests for OIDC auth hooks (#2730) 2022-03-18 11:59:10 +01:00
Maxime Besson 6ccdcec181 Unit tests for SAML auth hooks (#2730) 2022-03-18 11:59:10 +01:00
Maxime Besson 8d2b2c64ee Documentation for SAML auth hooks (#2730) 2022-03-18 11:58:51 +01:00
Maxime Besson 6d3f40b2fd add SAML Auth hook (#2730)
New hooks:
    samlGotAuthnResponse
    samlGenerateAuthnRequest
2022-03-18 11:58:28 +01:00
Maxime Besson 0998530118 doc for OpenCTI integration 2022-03-17 09:03:19 +01:00
Yadd 67825483b4 Indicate that libauthen-webauthn-perl is available for Debian 10 2022-03-16 15:04:36 +01:00
Christophe Maudoux 51819c8618 Update doc & manifests 2022-03-14 22:30:24 +01:00
Maxime Besson d39d65f92e Test and doc for #2725 2022-03-11 12:07:51 +01:00
Maxime Besson 6ed0e9c1b4 Add session data to oidcGenerateUserInfoResponse (#2725) 2022-03-11 12:07:51 +01:00
Yadd f2f0071cc8 Add de translation for mail 2022-03-10 16:19:10 +01:00
Yadd ecc0572522 Drop de translation from manager (insufficient coverage) 2022-03-10 16:18:55 +01:00
Yadd 724a23f44f Drop nl/ro translation from portal (insufficient coverage) 2022-03-10 16:15:24 +01:00
Yadd 7064c7a710 Update tr translation from transifex 2022-03-10 16:10:45 +01:00
Christophe Maudoux 0e891d7d9c Append unit test (#2714) 2022-03-06 14:17:13 +01:00
Christophe Maudoux c389c6d509 Update version & typos (#2714) 2022-03-06 11:45:36 +01:00
Yadd 1aca07cc45 Add little script to follow translation progress 2022-03-06 09:07:55 +01:00
Christophe Maudoux 7116021238 Update doc & Typos (#2714) 2022-03-05 11:18:44 +01:00
Christophe Maudoux 5e33b79d48 Typos 2022-03-04 23:26:58 +01:00
Christophe Maudoux f6f9fe29cf Force reAuth from 2fManager (#2714) 2022-03-04 23:20:01 +01:00
Christophe Maudoux 50c312acc3 Avoid warning (#2716) 2022-03-04 23:15:09 +01:00
Maxime Besson 03df3a3329 Update 2FA doc 2022-03-04 17:41:04 +01:00
Christophe Maudoux 668b11b399 Typos 2022-03-03 23:29:48 +01:00
Christophe Maudoux 9c512f8e5b Test if a 2FA exists (#2716) 2022-03-03 23:05:19 +01:00
Christophe Maudoux 399fc52a00 Manifest & Tree 2022-03-03 22:30:08 +01:00
Christophe Maudoux 20c4773065 Doc & Typos 2022-03-03 22:29:45 +01:00
Yadd e5415338cb Update translations form transifex 2022-03-03 21:34:37 +01:00
Yadd fd610864ea Don't export id in Ajax response for authenticated users (#2709) 2022-03-03 18:55:02 +01:00
Yadd 1b42eaa363 Update translation from transifex (suggestions auto imported now) 2022-03-03 15:11:48 +01:00
Yadd c9be5b7db3 Add Hebrew language in manager 2022-03-03 15:07:01 +01:00
Yadd bd782db4cc Update fi translation from transifex 2022-03-01 21:48:53 +01:00
Yadd b976f2debf Add missing test dependency to Test::Output (fixes: #2717) 2022-03-01 20:07:52 +01:00
Yadd ec0041fc9d Update dist/CVE versions 2022-02-25 14:20:03 +01:00
Clément OUDOT 8e8ce721ef Merge branch 'epel9' into 'v2.0'
Prepare for EL9 support

See merge request lemonldap-ng/lemonldap-ng!254
2022-02-25 11:37:00 +00:00
Maxime Besson ed953fc276 Fix Webauthn conf test 2022-02-25 11:22:35 +01:00
Maxime Besson 37740a3e6a Document U2F deprecation 2022-02-25 10:46:01 +01:00
Maxime Besson 39da9c64a9 Add config tests for webauthn 2022-02-25 10:39:00 +01:00
Xavier Bachelot 287a7bfea5 Prepare for EL9 support 2022-02-24 15:25:55 +01:00
Maxime Besson c45819807f Update XWiki doc 2022-02-23 15:25:24 +01:00
Maxime Besson 092526b271 doc: add mailman 2022-02-23 10:35:37 +01:00
Yadd b13baa8f85 Apply COPYING changes to debian/copyright 2022-02-21 17:46:16 +01:00
Maxime Besson c84e3981c1 Update doc for custom functions (#2706) 2022-02-21 17:41:07 +01:00
Clément OUDOT 85938271fe Fix debian-dist 2022-02-21 13:05:46 +01:00
Yadd eb66f7f09c Fix clean dist 2022-02-20 07:16:00 +01:00
Christophe Maudoux bb36a9e526 COPYING 2022-02-19 18:55:12 +01:00
Christophe Maudoux 161a356c87 Update README 2022-02-19 18:50:07 +01:00
Christophe Maudoux 70b52caa94 Typo & Update URL 2022-02-19 18:40:15 +01:00
Christophe Maudoux fdad83378f Update authors 2022-02-19 18:36:14 +01:00
Clément OUDOT 14b2827911 Update version in packaging files 2022-02-19 17:53:14 +01:00
Clément OUDOT e10f1c7825 Update changelog 2022-02-19 17:50:03 +01:00
Clément OUDOT 4be3bde0bf Update version in Makefile.PL 2022-02-19 17:44:51 +01:00
Christophe Maudoux 44b6cde64a Improve OIDC doc 2022-02-19 13:22:00 +01:00
Yadd 4413850257 Merge branch 'fix_warnings' into 'v2.0'
Fix warnings (#2704)

See merge request lemonldap-ng/lemonldap-ng!253
2022-02-19 10:59:01 +00:00
Christophe Maudoux 5c7a69e57b Fix warnings (#2704) 2022-02-19 11:30:45 +01:00
Christophe Maudoux ccf170ab06 Typos 2022-02-18 22:55:11 +01:00
Christophe Maudoux 8aa42aed19 Typos 2022-02-18 22:21:40 +01:00
Christophe Maudoux 9e0d28d659 Re-order OIDC dynamic registration options & Update doc + typos 2022-02-18 22:15:23 +01:00
Christophe Maudoux 01eb5eafa0 Fix typos in OIDC doc 2022-02-18 19:11:41 +01:00
Maxime Besson edcbb25c4a Fix typo in WebAuthn doc 2022-02-18 16:37:53 +01:00
Maxime Besson ffbdcdb4fc Fix WebAuthn manager display (#1411) 2022-02-18 16:37:53 +01:00
Maxime Besson bb775a6fb6 Improve RPM install doc 2022-02-18 16:37:53 +01:00
Yadd 995ff5c023 Update tr translation from transifex 2022-02-18 16:28:38 +01:00
Yadd c830a15d19 Update cpan dependencies 2022-02-18 10:05:38 +01:00
Maxime Besson 83892da1d9 Remove download page from docs (#2516) 2022-02-18 09:22:01 +01:00
Christophe Maudoux e45cfb2c02 Typos 2022-02-17 23:01:29 +01:00
Christophe Maudoux f66fcc9ee8 Typos & Doc 2022-02-17 22:37:04 +01:00
Christophe Maudoux 9550230dd4 Append comment (#2703) 2022-02-17 22:35:51 +01:00
Christophe Maudoux cdabc199ed Fix OIDC attributes refresh (#2703 & #2457) 2022-02-17 21:39:00 +01:00
Yadd b4a3dc8de3 Revert build depends to libauthen-u2f-tester-perl: unavailable on Bionic 2022-02-17 15:31:43 +01:00
Yadd 4624acc68b Add hooks to make build reproducible 2022-02-17 15:29:00 +01:00
Yadd 6d894fe94a Revert debian/build-depends Authen::WebAuthn: not available anywhere 2022-02-17 15:09:15 +01:00
Yadd 560dc873f2 Update POD (lintian reports errors) 2022-02-17 14:58:50 +01:00
Yadd 0adb8691a1 Update build dependencies 2022-02-17 14:58:31 +01:00
Yadd 50b635dd77 align 2022-02-17 06:00:52 +01:00
Yadd aeef235262 Update Debian supported versions 2022-02-17 05:54:38 +01:00
Christophe Maudoux 2d19df844f Doc typos & build tree 2022-02-16 22:03:56 +01:00
Yadd b88a72c267 tidy 2022-02-16 17:43:29 +01:00
Yadd c0472d41db Update version 2022-02-16 17:31:45 +01:00
Yadd 0d326ac914 Update parameters list 2022-02-16 17:31:22 +01:00
Yadd c590444d2f Update manifests 2022-02-16 17:31:05 +01:00
Yadd 525e6711d6 Merge branch 'improve-log4perl-2565' into 'v2.0'
Enrich Log4Perl placeholders with request details

See merge request lemonldap-ng/lemonldap-ng!234
2022-02-16 16:18:26 +00:00
Yadd c161738b42 Update translations from transifex 2022-02-16 11:38:24 +01:00
Maxime Besson af7abe8d19 Merge branch 'fix-webauthn-1411' into v2.0 2022-02-16 10:38:09 +01:00
Yadd aa976d4702 Update Turkish translation from transifex 2022-02-14 12:19:05 +01:00
Christophe Maudoux 717eafdd2f Append unit test (#1714) 2022-02-13 18:07:17 +01:00
Yadd d6c689c1ec Don't fail on bad logLevel value (fixes: #1714) 2022-02-13 14:10:30 +01:00
Yadd 9fd5231cef clean 2022-02-13 14:10:19 +01:00
Yadd 96fbf6cd90 Merge branch 'chrome-form-replay' into 'v2.0'
fix Chrome warns about compromised data when using form replay (#2694)

See merge request lemonldap-ng/lemonldap-ng!251
2022-02-13 12:51:04 +00:00
Maxime Besson bf29da2a4d Upgrade doc for U2F deprecation (#2695) 2022-02-13 11:47:49 +01:00
Christophe Maudoux 1baf861809 Typos 2022-02-13 00:07:57 +01:00
Christophe Maudoux 2f862119f1 Merge branch 'OIDC_warnings' into 'v2.0'
Avoid useless warnings with OIDC

See merge request lemonldap-ng/lemonldap-ng!252
2022-02-12 23:05:26 +00:00
Christophe Maudoux 6b40041236 Re-order CAS service options & Typo 2022-02-12 23:38:03 +01:00
Christophe Maudoux 0e9514ab9a Typos 2022-02-12 23:03:49 +01:00
Christophe Maudoux 5e285d5f60 Avoid useless warnings with OIDC 2022-02-12 22:42:03 +01:00
Christophe Maudoux 33d5c231b5 Typos & Doc 2022-02-12 22:18:32 +01:00
Yadd 35b4a82943 Update translations from transifex 2022-02-12 13:52:45 +01:00
Christophe Maudoux 7b643f4271 Doc & Translations 2022-02-11 19:47:02 +01:00
Maxime Besson 73046867e6 Allow WebAuthn in 2F manager API (#1411) 2022-02-11 18:44:22 +01:00
Christophe Maudoux 028b0823e9 Typos 2022-02-10 22:44:35 +01:00
Christophe Maudoux a1f899ced9 Update doc 2022-02-10 22:44:35 +01:00
Clément OUDOT 0b6ea0f890 Update RELEASE instructions 2022-02-09 20:14:51 +01:00
Christophe Maudoux 8d84f14036 Doc typos 2022-02-09 00:10:59 +01:00
Christophe Maudoux d83d79eec1 Revert "Append team and contact pages in doc"
This reverts commit ff2bfc1f8e.
2022-02-08 23:11:42 +01:00
Christophe Maudoux ff2bfc1f8e Append team and contact pages in doc 2022-02-08 12:06:09 +01:00
David Coutadeur dbf3b00576 fix Chrome warns about compromised data when using form replay (#2694) 2022-02-07 16:04:38 +01:00
Christophe Maudoux 9b7d900eca Fix unit tests (#2577) 2022-02-06 13:18:40 +01:00
Christophe Maudoux 04c29e5c71 Merge branch '2683' into 'v2.0'
Append rule to allow StayConnected plugin (#2683)

See merge request lemonldap-ng/lemonldap-ng!243
2022-02-06 11:56:12 +00:00
Christophe Maudoux a1d3e159a3 Be more relevant (#2683) 2022-02-06 12:14:58 +01:00
Christophe Maudoux 5e3154b842 Merge branch 'v2.0' into 2683 2022-02-06 12:14:02 +01:00
Yadd d3389a7370 Render getModule() usable with connected users (fixes: #2664) 2022-02-05 11:55:17 +01:00
Jérémie Pierson 6df19ff183 Update Status to accept SKIP/EXPIRED (Fixes: #2693) 2022-02-05 11:40:17 +01:00
Yadd 7b71a0c764 Always initialize groups and hGroups (Fixes: #2476) 2022-02-05 10:21:32 +01:00
Christophe Maudoux 398f729da9 Improve doc (#2685) 2022-02-05 00:14:19 +01:00
Christophe Maudoux caa6fc9df9 Make manifest & decrease logLevel 2022-02-03 21:04:10 +01:00
Christophe Maudoux 67aaadf51b Merge branch 'v2.0' into 2683 2022-02-03 21:00:45 +01:00
Maxime Besson 2decb33e57 Risk based authentication doc (#2593) 2022-02-03 15:59:56 +01:00
Maxime Besson 0dc995e411 Rename internal has2f method to avoid conflict in perlExpr test (#2691) 2022-02-03 15:58:46 +01:00
Yadd 3a2ae337df Merge branch '2660' into 'v2.0'
Restore stop() method in Combination and LDAP backends

See merge request lemonldap-ng/lemonldap-ng!250
2022-02-03 10:49:18 +00:00
Yadd 42f3697a06 Fix versions 2022-02-03 11:20:47 +01:00
Maxime Besson 39570ee365 Add unit test for #2660 2022-02-03 11:13:25 +01:00
Maxime Besson e883860891 Add PE_PASSWORD_OK to stopping cases (#2660) 2022-02-03 11:13:25 +01:00
Yadd bf463b82af Combination: clarify result values (#2660) 2022-02-03 11:13:25 +01:00
Yadd 27df15774d Fix stop() call (#2660) 2022-02-03 11:13:25 +01:00
Yadd 00bf4a0d1a Add default stop() method for all Auth modules 2022-02-03 11:13:25 +01:00
Yadd 0df2d6dd30 No more display stop() errors 2022-02-03 11:13:25 +01:00
Yadd 50f25a9116 Fix stop() debug (#2660) 2022-02-03 11:13:25 +01:00
Yadd de79fc49b0 Reintroduce stop() method in LDAP/AD backends (#2660) 2022-02-03 11:13:25 +01:00
Yadd efe0ad448f Combination: accept "stop()" from authentication backends (#2660) 2022-02-03 11:13:25 +01:00
Maxime Besson bc684de4bb Improve LDAP error logs 2022-02-03 08:24:04 +01:00
Yadd e775782f95 Fix test (#2570) 2022-02-03 06:54:21 +01:00
Yadd 07dd22fac1 Merge branch '2594' into 'v2.0'
Drop double slashes in _pdata->{_url} + don't overwrite $self-portal if already set and fix (#2594)

See merge request lemonldap-ng/lemonldap-ng!249
2022-02-03 05:16:53 +00:00
Maxime Besson 59692b4fb2 Update .gitlab-ci.yml 2022-02-02 20:57:37 +00:00
Maxime Besson b68270e130 Centos8 deprecation causes random build fails.
Switch to vault repos until buildpkg updates
2022-02-02 20:54:38 +00:00
Yadd 315e573d9f Drop #2594 workarounds in tests 2022-02-02 11:11:04 +01:00
Yadd 3f42113229 Remove double slashes in _pdata->{_url} + Don't overwrite $self-portal if already set (#2594) 2022-02-02 11:11:00 +01:00
Christophe Maudoux 8ed4f07b0a Doc typos 2022-02-01 22:48:01 +01:00
Yadd 0f565afb4d Add WebAuthn logo license 2022-02-01 22:38:40 +01:00
Yadd 21f4ca1f35 [WAI] Add role for each message box (#2570) 2022-02-01 22:25:56 +01:00
Christophe Maudoux b4461667e3 Fix unit test (#2577) 2022-02-01 22:18:32 +01:00
Christophe Maudoux ab512da539 Typos & #1877 2022-02-01 22:09:25 +01:00
Yadd fe8107a88e Fix some placeholders (#2577) 2022-02-01 21:50:27 +01:00
Maxime Besson 004810b18b Documentation for #2565 2022-02-01 20:00:05 +01:00
Maxime Besson 9fb3e2422f Call logger->setRequest in Apache handler (#2565) 2022-02-01 20:00:05 +01:00
Maxime Besson bb531a5f53 Call logger->setRequest in PSGI apps (#2565) 2022-02-01 20:00:05 +01:00
Maxime Besson 8dabd0e02c Improve Log4Perl class with %Q and %E flags (#2565) 2022-02-01 20:00:05 +01:00
Yadd 45ba9cb89d Add an aria-label for each trplaceholder (#2577) 2022-02-01 17:20:17 +01:00
Yadd fa703b54f9 [RGAA] add a role attribute into messages (#2570) 2022-02-01 17:09:31 +01:00
Yadd c3724a618f Fix versions 2022-02-01 17:09:31 +01:00
Yadd 42f100d74b Merge branch '2689' into 'v2.0'
Fix DELETE session(s)/my REST services (#2689)

See merge request lemonldap-ng/lemonldap-ng!247
2022-02-01 15:20:18 +00:00
Yadd f2b8cd870e Merge branch 'DevOps-redirection' into 'v2.0'
Append redirection params (#2685)

See merge request lemonldap-ng/lemonldap-ng!241
2022-02-01 14:27:13 +00:00
Yadd 3047fa6dd7 Fix !241 for Apache (FCGI client) 2022-02-01 15:15:25 +01:00
Christophe Maudoux 8fe116ff7a Improve doc (#2685) 2022-02-01 15:04:14 +01:00
Christophe Maudoux e599b44931 Improve doc (#2685) 2022-02-01 15:04:14 +01:00
Christophe Maudoux c0fe715a0d Improve doc (#2685) 2022-02-01 15:04:14 +01:00
Christophe Maudoux 47ea289f5c Fix log level (#2685) 2022-02-01 15:04:14 +01:00
Christophe Maudoux 2b6c478f41 Append redirection params (#2685) 2022-02-01 15:04:14 +01:00
Christophe Maudoux 56460d1d5b Improve doc 2022-01-31 15:57:27 +01:00
Christophe Maudoux a3d1b62a77 Append error codes page (#2516) 2022-01-31 15:57:27 +01:00
Yadd ab4eec0118 Update Tr translation 2022-01-28 15:17:58 +01:00
Maxime Besson 2f240cc936 Add doc for confluence 2022-01-27 18:45:57 +01:00
David Coutadeur 5fe369c828 display cfgDate in debug logs while handler is loading conf (#2566) 2022-01-27 15:29:09 +00:00
Christophe Maudoux 8165d3f5bd Update doc (#2689) 2022-01-26 22:57:55 +01:00
Christophe Maudoux 819b3e41c0 Update & improve unit test (#2689) 2022-01-26 22:54:45 +01:00
Christophe Maudoux 607adc73eb Update version (#2689) 2022-01-26 22:49:13 +01:00
Christophe Maudoux 2ae9191e0a Fix DELETE session/my (#2689) & enable DELETE sessions/my only if globalLogout is on 2022-01-26 22:46:12 +01:00
Christophe Maudoux ae74fdf53c Build tree & attributes 2022-01-26 20:03:08 +01:00
Yadd f5ae2ef283 Update tr translation from transifex 2022-01-26 15:32:49 +01:00
Clément OUDOT bc5ddb6c83 We do not provide sources in offical Debian repository 2022-01-25 10:55:40 +01:00
Clément OUDOT 275390d48f Merge branch 'issue-2673-CAS-multiple-service-URL' into 'v2.0'
Possibility to define multiple service url for a CAS application

See merge request lemonldap-ng/lemonldap-ng!246
2022-01-24 21:25:39 +00:00
Clément OUDOT b1bc592f00 Add unit test when service is not an array (#2673) 2022-01-24 19:58:42 +01:00
Clément OUDOT 8c998fe0a2 Better error message (#2673) 2022-01-24 19:42:12 +01:00
Clément OUDOT 2d3cb1ca4c Test if service parameter is an array (#2673) 2022-01-24 18:51:19 +01:00
Clément OUDOT 72c0923ff0 Update upgrade notes for Manager API (#2673) 2022-01-23 18:07:10 +01:00
Clément OUDOT adb1f6e55c Update OpenAPI spec (#2673) 2022-01-23 18:04:08 +01:00
Clément OUDOT c34f8c8291 Manager CAS service option as an array (#2673) 2022-01-23 18:03:47 +01:00
Clément OUDOT 3c0f374c29 Merge branch 'v2.0' into issue-2673-CAS-multiple-service-URL 2022-01-23 16:41:18 +01:00
Clément OUDOT 8482089a88 Fix error message in Manager API 2022-01-23 16:40:21 +01:00
Christophe Maudoux 3ffb7aa607 Merge branch 'v2.0' into 2683 2022-01-22 21:19:42 +01:00
Clément OUDOT 8bc5e81ba6 Update Manager definition and tests (#2673) 2022-01-22 17:10:36 +01:00
Clément OUDOT f7c1cc0103 Unit test for CAS multiple service URLs (#2673) 2022-01-22 16:58:09 +01:00
Clément OUDOT e567eeb6db Allow mutliple URLs for CAS service (#2673) 2022-01-22 16:57:08 +01:00
Clément OUDOT 23fe6d3481 Merge branch 'issue-2672-password-hash-list' into 'v2.0'
DBI password hash list

See merge request lemonldap-ng/lemonldap-ng!245
2022-01-22 15:01:47 +00:00
Clément OUDOT a853e083de Update documentation on password hash in DBI (#2672) 2022-01-22 15:51:38 +01:00
Clément OUDOT 43d69aa3f0 Remove check on password hash in DBI (#2672) 2022-01-22 15:45:27 +01:00
Maxime Besson 220749bf4e Documentation for webauthn (#1411) 2022-01-21 18:21:30 +01:00
Maxime Besson fc2951a4b1 Fix U2F deletion (#1411) 2022-01-21 18:21:30 +01:00
Maxime Besson 3fef6ddcaa Add WebAuthn settings to manager (#1411) 2022-01-21 18:21:30 +01:00
Maxime Besson 38a100f6f6 Add WebAuthn to manager 2FA (#1411) 2022-01-21 18:21:30 +01:00
Maxime Besson ca0bc3422d unit test for U2F migration script (#1411) 2022-01-21 18:21:30 +01:00
Maxime Besson f7852b3302 Add U2F to WebAuthn migration script (#1411) 2022-01-21 18:19:56 +01:00
Maxime Besson 2cc2a5804b Add unit tests for WebAuthn (#1411) 2022-01-21 18:19:56 +01:00
Maxime Besson 825e213017 WebAuthn perl modules (#1411) 2022-01-21 18:10:57 +01:00
Maxime Besson 596e2f1f3d Webauthn frontend code (#1411) 2022-01-21 18:10:48 +01:00
Maxime Besson 1054af21e4 Add WebAuthn to available 2F (#1411) 2022-01-21 18:10:45 +01:00
Paul Curie b2cc201993 Update wekan.rst 2022-01-21 15:05:28 +00:00
Maxime Besson 8cc84d9461 Missing openid scope should be an explicit error 2022-01-21 15:23:20 +01:00
Maxime Besson 25403e373c Merge branch 'fix-encrypt-totp-2625' into 'v2.0'
Encryption of TOTP secrets

See merge request lemonldap-ng/lemonldap-ng!231
2022-01-20 15:26:29 +00:00
Maxime Besson 029b99821d Documentation for #2625 2022-01-20 16:15:54 +01:00
Maxime Besson 0496332389 Unit tests for #2625 2022-01-20 16:15:54 +01:00
Maxime Besson d854a8016d Add totp2fEncryptSecret in manager (#2625) 2022-01-20 16:15:54 +01:00
Maxime Besson 6ad98c4eba Register encryptTotpSecrets script (#2625) 2022-01-20 16:15:54 +01:00
Maxime Besson 6a40a70ddb Add script to encrypt existing TOTP secrets (#2625) 2022-01-20 15:39:13 +01:00
Maxime Besson 09126d91fd Add optional encryption of new TOTP secret (#2625) 2022-01-20 15:39:13 +01:00
Maxime Besson db35ecf877 Merge branch 'fix-handler-psgi-logger-2632' into 'v2.0'
Transmit handler local config to handler psgi server init (#2632)

See merge request lemonldap-ng/lemonldap-ng!232
2022-01-20 14:17:06 +00:00
Maxime Besson 68a24ebb14 Merge branch 'fix-custom-2675' into 'v2.0'
Rework Custom plugins

See merge request lemonldap-ng/lemonldap-ng!239
2022-01-20 14:05:35 +00:00
Maxime Besson 11523cfae4 Upgrade note for #2675 2022-01-20 14:55:34 +01:00
Christophe Maudoux 478e459028 Append cfgDate (#2637) 2022-01-15 21:50:13 +01:00
Christophe Maudoux 344eae6f3e Merge branch 'v2.0' into 2683 2022-01-15 11:05:36 +01:00
Christophe Maudoux 0b5259ffad Improve code & append unit test (#2683) 2022-01-15 00:03:22 +01:00
Christophe Maudoux 900a15c2b2 Partial revert (closes: #2638) 2022-01-14 22:44:25 +01:00
Christophe Maudoux 31aa456888 Update manifest 2022-01-14 22:39:06 +01:00
Christophe Maudoux bf5df4497f Merge branch '2686' into 'v2.0'
2686

See merge request lemonldap-ng/lemonldap-ng!242
2022-01-14 21:37:46 +00:00
Christophe Maudoux a8f082120c Update version (#2686) 2022-01-14 22:21:57 +01:00
Christophe Maudoux af683b6a7b Update doc (#2686) 2022-01-14 22:15:36 +01:00
Christophe Maudoux e0be422cc6 Improve unit test (#2686) 2022-01-14 21:59:15 +01:00
Christophe Maudoux 322d0afc7a Cleaning code (#2686) 2022-01-14 21:17:57 +01:00
Maxime Besson 2fa28bf11b Fix radius test for #2621 2022-01-14 18:15:21 +01:00
Maxime Besson 7b7fd1141d Fix SIGPIPE during LDAP validation (#2519) 2022-01-14 17:52:51 +01:00
Maxime Besson ec8059ccfe Upgrade note for #2612 2022-01-14 17:45:30 +01:00
Maxime Besson 8fc59823aa Merge branch 'fix-remember-login-2616' into 'v2.0'
Remember login when password fails

See merge request lemonldap-ng/lemonldap-ng!222
2022-01-14 16:42:17 +00:00
Maxime Besson c4b22d38c9 Add unit tests (#2656) 2022-01-14 17:14:37 +01:00
Maxime Besson 9e51f78089 Fix splitting CAS proxies (#2656) 2022-01-14 17:14:37 +01:00
Maxime Besson 4bf7245605 Documentation for casTicketExpiration (#2654) 2022-01-14 17:14:37 +01:00
Maxime Besson e1896e07ab Unit test for #2654 2022-01-14 17:14:37 +01:00
Maxime Besson d2a341191b Set lower TTL on CAS temporary tickets (#2654) 2022-01-14 17:14:37 +01:00
Maxime Besson 58af695d2d Add casTicketExpiration to manager 2022-01-14 17:14:36 +01:00
Maxime Besson bc7b82d493 Upgrade recommendation for #2682 2022-01-14 16:57:14 +01:00
Maxime Besson 771290ade8 Use stronger encryption alg for new certificates (#2682) 2022-01-14 16:57:14 +01:00
dcoutadeur dcoutadeur b66613af31 Merge branch '2614-error-log-for-SOAP-SAML-message' into 'v2.0'
display precise error while sending direct SOAP SAML message (#2614)

See merge request lemonldap-ng/lemonldap-ng!220
2022-01-14 14:01:21 +00:00
Christophe Maudoux 987918b2ff Fix menu building (#2686) 2022-01-14 12:46:44 +01:00
Christophe Maudoux 87395937ab Append REST service for applications list (#2686) 2022-01-13 23:25:10 +01:00
Christophe Maudoux 31d3b93a7c Check rule at each step (#2683) 2022-01-12 22:42:46 +01:00
Christophe Maudoux e26485a335 Doc + typo (#2683) 2022-01-12 22:19:54 +01:00
Christophe Maudoux 3b235dd082 Use rule to allow stayConnect plugin (#2683) 2022-01-12 22:19:28 +01:00
Christophe Maudoux 0964eabe5e Update manifest 2022-01-12 18:29:43 +01:00
Christophe Maudoux 527a7bda17 Fix debug message 2022-01-11 21:59:25 +01:00
Christophe Maudoux 87d39aecb6 Typos FastCGI server 2022-01-10 10:19:09 +01:00
Christophe Maudoux 940a950996 Update unit tests 2022-01-07 21:28:35 +01:00
Christophe Maudoux 505f1a7527 Append LDAP exported vars & fix groups attribute (#2679) 2022-01-05 21:19:49 +01:00
Christophe Maudoux e80d5fb55f Fix doc & typos 2022-01-05 20:31:50 +01:00
Christophe Maudoux 18462d6113 Merge branch 'refresh_my_rights' into 'v2.0'
Refresh my rights

See merge request lemonldap-ng/lemonldap-ng!238
2022-01-05 18:10:32 +00:00
Maxime Besson 59757642d3 Unit tests for *::Custom 2021-12-19 18:19:22 +01:00
Maxime Besson de1304b7fc Rework Custom plugins
See #2675, #2676 and #2677
2021-12-19 18:19:22 +01:00
Maxime Besson 0323813c38 Fix getDisplayType on choice + custom (#2678) 2021-12-19 18:19:22 +01:00
Christophe Maudoux 3959d4ae9d Merge branch 'v2.0' into refresh_my_rights 2021-11-22 21:26:30 +01:00
Christophe Maudoux a82df68fb0 Improve unit test (#2658) 2021-11-22 21:17:23 +01:00
Christophe Maudoux f583d5944b Keep authenticationLevel (#2658) 2021-11-22 20:40:34 +01:00
Christophe Maudoux 4f2e337e66 Re-order refresh steps (#2658) 2021-11-17 10:03:45 +01:00
Maxime Besson 93c9ae427f tidy 2021-10-08 08:32:33 +02:00
Maxime Besson b2bcb4dcb9 Transmit handler local config to handler psgi server init (#2632) 2021-10-08 08:32:21 +02:00
Maxime Besson 040117bd32 Unit test for #2616 2021-09-15 14:09:04 +02:00
Maxime Besson dd6291643d Fix unit tests after #2616 2021-09-15 14:00:52 +02:00
Maxime Besson 8aa3e65137 Remember login across authentication attempts (#2616) 2021-09-15 14:00:31 +02:00
David Coutadeur 2c62720c43 display precise error while sending direct SOAP SAML message (#2614) 2021-09-13 10:32:07 +02:00
727 changed files with 28709 additions and 10037 deletions

View File

@ -61,6 +61,8 @@ build_centos_8:
extends: .build_job
image: buildpkg/centos:8
script:
- sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
- sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
- yum-config-manager --enable PowerTools
- yum-config-manager --enable AppStream
- yum -y install epel-release

View File

@ -27,4 +27,4 @@ Past and present contributors:
* Mame Dieynaba SENE
* Habib ZITOUNI
See http://lemonldap-ng.org/contact#the_team
See https://lemonldap-ng.org/team.html

View File

@ -3,4 +3,4 @@
* Repository, issues,... : https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng
* Translations :
* software : https://www.transifex.com/lemonldapng/lemonldapng/
* documentation : since 2.0, LLNG community supports only english doc
* documentation : since 2.0, LL::NG community supports only english doc

57
COPYING
View File

@ -4,22 +4,22 @@ Upstream-Contact: https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/issues
Source: https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/tags?sort=updated_desc
Files: *
Copyright: 2005-2020, Xavier Guimard <yadd@debian.org>
2006-2020, Clement Oudot <clem.oudot@gmail.com>
Copyright: 2005-2022, Xavier Guimard <yadd@debian.org>
2006-2022, Clement Oudot <clem.oudot@gmail.com>
2018-2022, Christophe Maudoux <chrmdx@gmail.com>
2019-2022, Maxime Besson <maxime.besson@worteks.com>
2008, Mikael Ates <mikael.ates@univ-st-etienne.fr>
2008-2011, Thomas Chemineau <thomas.chemineau@gmail.com>
2012-2013, Sandro Cazzaniga <cazzaniga.sandro@gmail.com>
2012-2015, François-Xavier Deltombe <fxdeltombe@gmail.com>
2012-2019, David Coutadeur <david.coutadeur@gmail.com>
2018-2020, Christophe Maudoux <chrmdx@gmail.com>
2019-2020, Maxime Besson <maxime.besson@worteks.com>
2012-2021, David Coutadeur <david.coutadeur@gmail.com>
2019, Soisik Frogier <soisik.froger@worteks.com>
2019, Mame Dieynaba Sene <msene@linagora.com>
2019, Antoine Rosier <lemonldap@mon-refuge.fr>
2005-2020, Gendarmerie nationale <https://www.gendarmerie.interieur.gouv.fr>
2019-2021, Antoine Rosier <lemonldap@mon-refuge.fr>
2005-2022, Gendarmerie nationale <https://www.gendarmerie.interieur.gouv.fr>
2006-2019, LINAGORA <info@linagora.com>
2015-2018, Savoir-faire Linux <contact@savoirfairelinux.com>
2018-2020, Worteks <info@worteks.com>
2018-2022, Worteks <info@worteks.com>
License: GPL-2+
Files: lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/PAM.pm
@ -33,17 +33,23 @@ Copyright: 2011, Tatsuhiko Miyagawa <miyagawa@bulknews.net>
License: Artistic or GPL-1+
Files: *.js
Copyright: 2005-2019, Xavier Guimard <yadd@debian.org>
2006-2019, Clement Oudot <clem.oudot@gmail.com>
Copyright: 2005-2022, Xavier Guimard <yadd@debian.org>
2006-2022, Clement Oudot <clem.oudot@gmail.com>
2008-2012, Thomas Chemineau <thomas.chemineau@gmail.com>
2018-2019, Christophe Maudoux <chrmdx@gmail.com>
2018-2022, Christophe Maudoux <chrmdx@gmail.com>
2019-2022, Maxime Besson <maxime.besson@worteks.com>
License: GPL-2+
Files: lemonldap-ng-portal/site/htdocs/static/bootstrap/webauthn.png
Copyright: James Cullum <https://github.com/JamesCullum>
License: WebAuthnLogoLicense
Files: lemonldap-ng-portal/site/htdocs/static/common/js/portal.js
Copyright: 2005-2019, Xavier Guimard <yadd@debian.org>
2006-2019, Clement Oudot <clem.oudot@gmail.com>
Copyright: 2005-2022, Xavier Guimard <yadd@debian.org>
2006-2022, Clement Oudot <clem.oudot@gmail.com>
2008-2012, Thomas Chemineau <thomas.chemineau@gmail.com>
2018-2019, Christophe Maudoux <chrmdx@gmail.com>
2018-2022, Christophe Maudoux <chrmdx@gmail.com>
2019-2022, Maxime Besson <maxime.besson@worteks.com>
License: GPL-2+
Comment: a little part of it comes from JQuery-UI examples
(https://snipplr.com/view/29434/)
@ -1268,3 +1274,26 @@ License: BSD-3-clause
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License: WebAuthnLogoLicense
How to Use These Logos
.
Do these awesome things:
.
* Use the WebAuthn logo to link to WebAuthn specs or webauthn.org
* Use the WebAuthn logo to show that your product or project has built-in WebAuthn integration
* Use the WebAuthn logo in a blog post or news article about WebAuthn
.
Please don't do these things:
.
x Use the WebAuthn logo for your applications icon
x Create a modified version of the WebAuthn logo
x Integrate the WebAuthn logo into your logo
x Use any WebAuthn artwork without permission
x Sell any WebAuthn artwork without permission
x Change the colors, dimensions or add your own text/images
.
Please contact me
.
* If you want to use artwork not included in this repository
* If you want to use these images in a video/mainstream media

232
INSTALL
View File

@ -29,15 +29,10 @@ package for Debian works fine).
1.1.2 - Perl prereq
Perl modules:
Apache::Session, Net::LDAP, MIME::Base64, CGI, LWP::UserAgent, Cache::Cache,
DBI, XML::Simple, SOAP::Lite, HTML::Template, XML::LibXML, XML::LibXSLT
Perl modules: use `perl scripts/dependencies-list.pl` to see needed list
With Debian:
apt-get install libapache-session-perl libnet-ldap-perl libcache-cache-perl \
libdbi-perl perl-modules libwww-perl libcache-cache-perl \
libxml-simple-perl libhtml-template-perl libsoap-lite-perl \
libxml-libxml-perl libxml-libxslt-perl
apt-get build-dep lemonldap-ng
1.2 - BUILDING
--------------
@ -52,6 +47,8 @@ With Debian:
By default, all is installed in /usr/local/lemonldap-ng except Perl libraries
which are installed in a directory included in @INC.
Documentation is then available in /usr/local/lemonldap-ng/doc
1.2.2 - Install on Debian
$ tar xzf lemonldap-ng-*.tar.gz
@ -62,223 +59,4 @@ which are installed in a directory included in @INC.
Here, all is installed in /var/lib/lemonldap-ng, /etc/lemonldap-ng except Perl
libraries which are installed in /usr/share/perl5/Lemonldap/NG/
1.3 - EXAMPLE CONFIGURATION
---------------------------
If you have build Debian packages, configuration is done by Debconf. See
/usr/share/doc/liblemonldap-ng-common/README.Debian to use it.
After build, you have a new file named example/apache.conf. You just have to
include this file in Apache configuration:
# in httpd.conf (with Apache1)
include /path/to/lemonldap-ng/source/example/apache.conf
# or in apache2.conf (with Apache2)
include /path/to/lemonldap-ng/source/example/apache2.conf
Modify your /etc/hosts file to include:
127.0.0.1 auth.example.com test1.example.com manager.example.com test2.example.com
Use a browser to connect to http://manager.example.com/ and specify your LDAP
settings. If you don't set managerDn and managerPassword, Lemonldap::NG will
use an anonymous bind to find user dn.
Next, restart Apache use your prefered browser and try to connect to
http://test1.example.com/. You'll be redirect to auth.example.com. Try
to authenticate yourself with a valid account and the protected page will
appear. You will find other explanations on this page.
the file /usr/local/lemonldap-ng/etc/storage.conf
(/etc/lemonldap-ng/storage.conf on Debian systems) can be modified to change
configuration database.
-------------------------
2 - ADVANCED INSTALLATION
-------------------------
It is recommended to install the example first then to adapt it.
2.1 - PREREQ
2.1.1 - Apache
To use Lemonldap::NG, you have to run a LDAP server and of course an Apache
server compiled with mod-perl (version 1.3 or 2.x). Generaly, the version of
Apache proposed with your Linux distribution match, but some distributions used
an experimental version of mod_perl with Apache2 (mod_perl-1.99) which does
not work with Lemonldap::NG. With such distributions (like Debian-3.1), you
have to use Apache-1.3 or to use a mod_perl backport (www.backports.org
package for Debian works fine).
For Apache2, you can use both mpm-worker and mpm-prefork. Mpm-worker works
faster and Lemonldap::NG use the thread system for best performance. If you
have to use mpm-prefork (for example if you use PHP), Lemonldap::NG will work
anyway.
You can use Lemonldap::NG in an heterogene world: the authentication portal and
the manager can work in any version of Apache 1.3 or more even if mod_perl is
not compiled, with ModPerl::Registry or not... Only the handler (site protector)
need mod_perl. The different handlers can run on different servers with
different versions of Apache/mod_perl.
2.1.2 - Perl prereq
Warning: Handler and Portal parts both need Lemonldap::NG::Manager components
to access to configuration.
Manager:
--------
Apache::Session, MIME::Base64, CGI, LWP::UserAgent, DBI, XML::Simple,
SOAP::Lite, XML::LibXML, XML::LibXSLT, Lemonldap::NG::Common
With Debian:
apt-get install perl-modules libxml-simple-perl libdbi-perl libwww-perl
# If you want to use SOAP
apt-get install libsoap-lite-perl
Portal:
-------
Apache::Session, Net::LDAP, MIME::Base64, CGI, Cache::Cache, DBI, XML::Simple,
SOAP::Lite, HTML::Template, XML::LibXML, Lemonldap::NG::Common
With Debian:
apt-get install libapache-session-perl libnet-ldap-perl perl-modules
Handler:
--------
Apache::Session, MIME::Base64, CGI, LWP::UserAgent, Cache::Cache, DBI,
XML::Simple, SOAP::Lite, Lemonldap::NG::Common
With Debian:
apt-get install libapache-session-perl libwww-perl libcache-cache-perl
2.2 - SOFTWARE INSTALLATION
---------------------------
If you just want to install a handler or a portal or a manager:
$ tar xzf lemonldap-ng-*.tar.gz
$ cd lemonldap-ng-*/Lemonldap-NG-(Portal|Handler|Manager)
$ perl Makefile.PL && make && make test
$ sudo make install
else for a complete install:
$ tar xzf lemonldap-ng-*.tar.gz
$ cd lemonldap-ng-*
$ make && make test
$ sudo make install
See prereq in §1.1.2
2.3 - LEMONLDAP::NG INSTALLATION
--------------------------------
2.3.1 - Database configuration
2.3.1.1 - Lemonldap::NG Configuration database
If you use DBI or another system to share Lemonldap::NG configuration, you have
to initialize the database. An example is given in example/lmConfig.mysql for
MySQL.
2.3.1.2 - Apache::Session database
The choice of Apache::Session::* module is free. See Apache::Session::Store::*
or Apache::Session::* to know how to configure the module. For example, if you
want to use Apache::Session::MySQL, you can create the database like this:
CREATE DATABASE sessions (
id char(32),
a_session text
);
2.3.2 - Manager configuration
Copy example/manager.cgi and personalize it if you want (see
Lemonldap::NG::Manager). You have to set in particular configStorage. For
example with MySQL:
$my $manager = Lemonldap::NG::Manager->new ( {
dbiChain => "DBI:mysql:database=mybase;host=1.2.3.4",
dbiUser => "lemonldap-ng",
dbiPassword => "mypass",
} );
Securise Manager access with Apache: Lemonldap::NG does not securise the manager
itself yet:
SSLEngine On
Order Deny, Allow
Deny from all
Allow from admin-network/netmask
AuthType Basic
...
After configuration, you can also protect the manager with an Lemonldap::NG
handler.
2.3.3 - Configuration edition
Connect to the manager with your browser start configure your Web-SSO. You have
to set at least some parameters:
a) General parameters :
* Authentication parameters -> portal : URL to access to the authentication
portal
* Domain : the cookie domain. All protected VirtualHosts have to be under it
* LDAP parameters -> LDAP Server
* LDAP parameters -> LDAP Accout and password : required only if anonymous
binds are not accepted
* Session Storage -> Apache::Session module : how to store user sessions.
You can use all module that
inherit from Apache::Session
like Apache::Session::MySQL
* Session Storage -> Apache::Session Module parameters :
see Apache::Session::<Choosen module>
b) User groups :
Use the "New Group" button to add your first group. On the left, set the
keyword which will be used later and set on the right the corresponding rule:
you can use :
* an LDAP filter (it will be tested with the user uid)
or
* a Perl condition enclosed with {}. All variables declared in "General
parameters -> LDAP attributes" can be used with a "$". For example:
MyGroup / { $uid eq "foo" or $uid eq "bar" }
c) Virtual hosts
You have to create a virtual host for each Apache host (virtual or real)
protected by Lemonldap::NG even if just a sub-directory is protected. Else,
user who want to access to the protected area will be rejected with a "500
Internal Server Error" message and the apache logs will explain the problem.
Each virtual host has 2 groups of parameters:
* Headers: the headers added to the apache request. Default :
Auth-User => $uid
* Rules: subdivised in 2 categories:
* default : the default rule
* personalized rules: association of a Perl regular expression and
a condition. For example:
^/restricted.*$ / $groups =~ /\bMyGroup\b/
-------------
3 - DEBUGGING
-------------
Lemonldap::NG uses simply the Apache log system. So use LogLevel to choose
information to display.
Documentation is then available in /usr/share/doc/lemonldap-ng

View File

@ -36,6 +36,8 @@ LISTCOMPRESSED=tar tzf
COMPRESSSUFFIX=tar.gz
NGINX=/usr/sbin/nginx
UGLIFYJSVERSION:=$(shell uglifyjs --version|perl -pe 's/^[^\d]*(\d).*$$/$$1/')
CHOWN=chown
CHMOD=chmod
# Default directories install
# ---------------------------
@ -63,6 +65,7 @@ MANAGERSITEDIR=$(MANAGERDIR)/htdocs
MANAGERAPIDIR=$(MANAGERDIR)/api
MANAGERSTATICDIR=$(MANAGERSITEDIR)/static
MANAGERRELATIVESTATICDIR=/static
MANAGERRELATIVEDOCDIR=/doc
MANAGERTEMPLATESDIR=$(MANAGERSITEDIR)/templates
DOCDIR=$(DOCUMENTROOT)
DEFDOCDIR=$(DOCUMENTROOT)/doc
@ -473,6 +476,7 @@ e2e-tests/conf/apache2.pid: start_web_server
start_web_server: all prepare_test_server
# Clean old server if launched
mkdir -p e2e-tests/conf
@if test "$(TESTBACKEND)" = "DBI"; then \
echo 'create table lmConfig (cfgNum int, data text);'|sqlite3 e2e-tests/conf/config.db; \
echo 'create table sessions (id text, a_session text, LastUpdated int);'|sqlite3 e2e-tests/conf/sessions.db; \
@ -645,6 +649,7 @@ install_bin: install_conf_dir
${SRCPORTALDIR}/scripts/llngDeleteSession \
${SRCCOMMONDIR}/scripts/convertConfig \
${SRCCOMMONDIR}/scripts/convertSessions \
${SRCCOMMONDIR}/scripts/encryptTotpSecrets \
${SRCCOMMONDIR}/scripts/lmMigrateConfFiles2ini \
${SRCCOMMONDIR}/scripts/rotateOidcKeys \
${SRCMANAGERDIR}/scripts/lmConfigEditor \
@ -674,12 +679,12 @@ install_bin: install_conf_dir
$(RBINDIR)/lemonldap-ng-cli \
$(RBINDIR)/lemonldap-ng-sessions; \
fi
@chmod +x $(RBINDIR)/*
@$(CHMOD) +x $(RBINDIR)/*
install_fastcgi_server:
@install -v -d $(RSBINDIR) $(RINITDIR) $(RETCDEFAULTDIR) $(RFASTCGISOCKDIR)
@cp -f fastcgi-server/sbin/llng-fastcgi-server $(RSBINDIR)
@chmod +x $(RSBINDIR)/llng-fastcgi-server
@$(CHMOD) +x $(RSBINDIR)/llng-fastcgi-server
@cp -f fastcgi-server/rc/llng-fastcgi-server $(RINITDIR)
@cp -f fastcgi-server/default/llng-fastcgi-server $(RETCDEFAULTDIR)
@$(PERL) -pi -e 's#__SBINDIR__#$(SBINDIR)#;s#__DEFAULTDIR__#$(ETCDEFAULTDIR)#;s#__FASTCGISOCKDIR__#$(FASTCGISOCKDIR)#g;' \
@ -697,13 +702,13 @@ install_fastcgi_server:
$(PERL) -pi -e 's#__GROUP__#$(FASTCGIGROUP)#' $(RETCDEFAULTDIR)/llng-fastcgi-server; \
fi
@if [ "$(FASTCGIUSER)" != "" ]; then \
chown $(FASTCGIUSER) $(RFASTCGISOCKDIR) || exit 1; \
$(CHOWN) $(FASTCGIUSER) $(RFASTCGISOCKDIR) || exit 1; \
if [ "$(FASTCGIGROUP)" != "" ]; then \
chgrp $(FASTCGIGROUP) $(RFASTCGISOCKDIR) || exit 1; \
fi; \
chmod 770 $(RFASTCGISOCKDIR); \
$(CHMOD) 770 $(RFASTCGISOCKDIR); \
else \
chmod 777 $(RFASTCGISOCKDIR); \
$(CHMOD) 777 $(RFASTCGISOCKDIR); \
fi
install_uwsgi_server:
@ -723,7 +728,7 @@ install_site: install_manager_site install_portal_site install_handler_site inst
fi
@$(PERL) -i -pe 's/__DNSDOMAIN__/$(DNSDOMAIN)/g' $(RCONFDIR)/for_etc_hosts
# Fix a lost of rights on the main directory
@chmod 755 $(RBINDIR) $(RDOCUMENTROOT) $(REXAMPLESDIR) $(RHANDLERDIR) $(RPORTALSTATICDIR) $(RMANAGERSITEDIR) $(RMANAGERAPIDIR) $(RTOOLSDIR) $(RCONFDIR) $(RDATADIR)
@$(CHMOD) 755 $(RBINDIR) $(RDOCUMENTROOT) $(REXAMPLESDIR) $(RHANDLERDIR) $(RPORTALSTATICDIR) $(RMANAGERSITEDIR) $(RMANAGERAPIDIR) $(RTOOLSDIR) $(RCONFDIR) $(RDATADIR)
@echo
@echo "LemonLDAP::NG v${VERSION} is installed with these parameters:"
@echo " - System configuration: ${CONFDIR}"
@ -802,6 +807,7 @@ install_manager_site: install_conf_dir
@rm -rf $$(find ${RMANAGERSTATICDIR} \
$(RMANAGERTEMPLATESDIR) $(RCONFDIR) -type d -name .svn)
@$(PERL) -i -pe 's#__MANAGERSTATICDIR__#$(MANAGERRELATIVESTATICDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
@$(PERL) -i -pe 's#__MANAGERDOCDIR__#$(MANAGERRELATIVEDOCDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
@$(PERL) -i -pe 's#__MANAGERTEMPLATESDIR__#$(MANAGERTEMPLATESDIR)#g' $(RCONFDIR)/$(CONFFILENAME)
install_portal_site: install_conf_dir
@ -884,23 +890,9 @@ install_examples_site:
install_doc_site:
# Offline documentation install
@rm -rf $(RDEFDOCDIR)
# Install doc directories
@install -v -d -m 755 $(RDEFDOCDIR)
@cd doc && find * -type d |(cd $(RDEFDOCDIR); xargs install -v -d -m 755) && cd -
# Install HTML files
@cd doc && for f in `find * -type f -name '*.html'`; do \
echo "Installing $$f"; \
../scripts/transform-templates \
usedebianlibs $(USEDEBIANLIBS) \
useexternallibs $(USEEXTERNALLIBS) \
jsminified $(JSCOMPRESS) \
cssminified $(CSSCOMPRESS) <$$f \
> $(RDEFDOCDIR)/$$f; \
done && cd -
# Install other files
@cd doc && for f in `find * -type f ! -name '*.html'`; do \
install -v -m 644 $$f $(RDEFDOCDIR)/$$f; \
done && cd -
@cd doc && find index.html pages/* -type f ! -path '*/.*' -exec install -v -m 644 -D '{}' $(RDEFDOCDIR)/'{}' \; && cd -
# Remove js
@cd $(RDEFDOCDIR) && if test "$(USEEXTERNALLIBS)" = "yes"; then \
rm -rvf $(DOCEXTERNALLIBS); \
@ -922,13 +914,13 @@ install_conf_dir: install_sessions_dir install_notif_dir install_captcha_dir ins
s#__NOTIFICATIONDIR__#$(APACHEFILENOTIFDIR)#g;\
s#__CACHEDIR__#$(CACHEDIR)#g;' $(RFILECONFIGDIR)/lmConf-1.json
@if [ "$(APACHEUSER)" != "" ]; then \
chown $(APACHEUSER) $(RFILECONFIGDIR) || exit 1; \
$(CHOWN) $(APACHEUSER) $(RFILECONFIGDIR) || exit 1; \
if [ "$(APACHEGROUP)" != "" ]; then \
chgrp $(APACHEGROUP) $(RFILECONFIGDIR) || exit 1; \
fi; \
chmod 770 $(RFILECONFIGDIR); \
$(CHMOD) 770 $(RFILECONFIGDIR); \
else \
chmod 777 $(RFILECONFIGDIR); \
$(CHMOD) 777 $(RFILECONFIGDIR); \
fi
@cp $(SRCCOMMONDIR)/tools/lmConfig.* $(SRCCOMMONDIR)/tools/apache-session-mysql.sql $(RTOOLSDIR)
@cp $(SRCCOMMONDIR)/tools/sso.schema $(RTOOLSDIR)
@ -940,52 +932,52 @@ install_sessions_dir:
@install -m 777 -v -d $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR)
# Fix Apache::Session directories permissions
@if [ "$(APACHEUSER)" != "" ]; then \
chown $(APACHEUSER) $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR) || exit 1; \
$(CHOWN) $(APACHEUSER) $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR) || exit 1; \
if [ "$(APACHEGROUP)" != "" ]; then \
chgrp $(APACHEGROUP) $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR) || exit 1; \
fi; \
chmod 770 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR); \
$(CHMOD) 770 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR); \
else \
chmod 777 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR); \
$(CHMOD) 777 $(RAPACHESESSIONFILEDIR) $(RAPACHESESSIONFILELOCKDIR) $(RAPACHEPSESSIONFILEDIR) $(RAPACHEPSESSIONFILELOCKDIR); \
fi
install_notif_dir:
@install -m 777 -v -d $(RFILENOTIFDIR)
# Fix notifications directory permissions
@if [ "$(APACHEUSER)" != "" ]; then \
chown $(APACHEUSER) $(RFILENOTIFDIR) || exit 1; \
$(CHOWN) $(APACHEUSER) $(RFILENOTIFDIR) || exit 1; \
if [ "$(APACHEGROUP)" != "" ]; then \
chgrp $(APACHEGROUP) $(RFILENOTIFDIR) || exit 1; \
fi; \
chmod 770 $(RFILENOTIFDIR); \
$(CHMOD) 770 $(RFILENOTIFDIR); \
else \
chmod 777 $(RFILENOTIFDIR); \
$(CHMOD) 777 $(RFILENOTIFDIR); \
fi
install_captcha_dir:
@install -m 777 -v -d $(RCAPTCHADIR)
# Fix captcha directory permissions
@if [ "$(APACHEUSER)" != "" ]; then \
chown $(APACHEUSER) $(RCAPTCHADIR) || exit 1; \
$(CHOWN) $(APACHEUSER) $(RCAPTCHADIR) || exit 1; \
if [ "$(APACHEGROUP)" != "" ]; then \
chgrp $(APACHEGROUP) $(RCAPTCHADIR) || exit 1; \
fi; \
chmod 770 $(RCAPTCHADIR); \
$(CHMOD) 770 $(RCAPTCHADIR); \
else \
chmod 777 $(RCAPTCHADIR); \
$(CHMOD) 777 $(RCAPTCHADIR); \
fi
install_cache_dir:
@install -m 777 -v -d $(RCACHEDIR)
# Fix captcha directory permissions
@if [ "$(APACHEUSER)" != "" ]; then \
chown $(APACHEUSER) $(RCACHEDIR) || exit 1; \
$(CHOWN) $(APACHEUSER) $(RCACHEDIR) || exit 1; \
if [ "$(APACHEGROUP)" != "" ]; then \
chgrp $(APACHEGROUP) $(RCACHEDIR) || exit 1; \
fi; \
chmod 770 $(RCACHEDIR); \
$(CHMOD) 770 $(RCACHEDIR); \
else \
chmod 777 $(RCACHEDIR); \
$(CHMOD) 777 $(RCACHEDIR); \
fi
postconf_hosts:
@ -1088,7 +1080,7 @@ dist: clean
@cp -pRH $$(find * -maxdepth 0|grep -v -e "lemonldap-ng-$(VERSION)") lemonldap-ng-$(VERSION)
@find $$dir -name '*.bak' -delete
@rm -rf lemonldap-ng-$(VERSION)/lemonldap-ng-$(VERSION)
@rm -rf lemonldap-ng-$(VERSION)/node_modules
@find lemonldap-ng-$(VERSION)/ -name node_modules -exec rm -rf '{}' \;
@$(COMPRESS) lemonldap-ng-$(VERSION).$(COMPRESSSUFFIX) lemonldap-ng-$(VERSION)
@rm -rf lemonldap-ng-$(VERSION)
@ -1102,7 +1094,7 @@ debian-dist: clean
@cp lemonldap-ng-$(VERSION)/_example/etc/api-apache2.X.conf lemonldap-ng-$(VERSION)/_example/etc/api-apache2.conf
@cp lemonldap-ng-$(VERSION)/_example/etc/test-apache2.X.conf lemonldap-ng-$(VERSION)/_example/etc/test-apache2.conf
@rm -rf lemonldap-ng-$(VERSION)/lemonldap-ng-$(VERSION)
@rm -rf lemonldap-ng-$(VERSION)/node_modules
-@find lemonldap-ng-$(VERSION)/ -name node_modules -exec rm -rf '{}' \;
@$(COMPRESS) lemonldap-ng_$(VERSION).orig.$(COMPRESSSUFFIX) lemonldap-ng-$(VERSION)
@rm -rf lemonldap-ng-$(VERSION)
@ -1113,7 +1105,7 @@ manifest: configure
@for i in ${SRCCOMMONDIR} ${SRCHANDLERDIR} ${SRCPORTALDIR} ${SRCMANAGERDIR}; do \
cd $$i; \
rm -vf MANIFEST MANIFEST*bak; \
make manifest; \
$(MAKE) manifest; \
cd -; \
done
perl -i -ne 'print unless/proverc/' */MANIFEST
@ -1175,15 +1167,14 @@ test-diff:
done
tidy: clean
@if perltidy -v|grep v20181120 >/dev/null; then \
find lemon*/ -type f \( -name '*.pm' -or -name '*.pl' -or -name '*.fcgi' -or -name '*.t' \) -print -exec perltidy -se -b {} \; ; \
else echo "Wrong perltidy version, please install Perl::Tidy@20181120" ; exit 1 ;\
@if perltidy -v|grep v20220217 >/dev/null; then \
for f in `find lemon*/ -type f \( -name '*.pm' -or -name '*.pl' -or -name '*.fcgi' -or -name '*.t' \)`; do \
echo -n $$f; \
perltidy -se -b $$f; \
echo; \
done; \
else echo "Wrong perltidy version, please install Perl::Tidy@20220217" ; exit 1 ;\
fi
for f in `find lemon*/ -type f \( -name '*.pm' -or -name '*.pl' -or -name '*.fcgi' -or -name '*.t' \)`; do \
echo -n $$f; \
perltidy -se -b $$f; \
echo; \
done
find lemon*/ -name '*.bak' -delete
$(MAKE) json

11
RELEASE
View File

@ -8,6 +8,7 @@ The version
* changelog: change version in scripts/generate-changelog.pl and run it
* Main modules (Common.pm/Handler.pm/Portal.pm/Manager.pm)
* Makefile.PL for cross-dependencies
* codemeta.json
- Then update packages information with:
$ make clean && make cpan
@ -19,6 +20,10 @@ $ make clean && make cpan
Before release
--------------
- Run unit tests
$ make test
$ make LLNGTESTLDAP=1 LLNGTESTLDAP_SLAPD_BIN=/usr/local/openldap/libexec/slapd LLNGTESTLDAP_SLAPADD_BIN=/usr/local/openldap/sbin/slapadd LLNGTESTLDAP_SCHEMA_DIR=/usr/local/openldap/etc/openldap/schema/ test
- Update languages (needs a Transifex token)
$ ./scripts/download_translations
@ -39,6 +44,8 @@ Before release
- Update doc/admin/documentation.rst to display vulnerable packaged versions
- Close the milestone on Gitlab and create a new one
For minor release
-----------------
@ -113,9 +120,7 @@ Upload on Docker hub
Site
----
- Update links on the download page
- Close the milestone on Gitlab and create a new one
- Update admin documentation and API documentation
- Update version in the download page (see website-landing-page repository)
Spread the word
---------------

View File

@ -92,7 +92,4 @@
Options +FollowSymLinks
DirectoryIndex index.html start.html
</Directory>
# Uncomment this if site if you use SSL only
#Header set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

View File

@ -105,7 +105,4 @@
Options +FollowSymLinks
DirectoryIndex index.html start.html
</Directory>
# Uncomment this if site if you use SSL only
#Header set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

View File

@ -94,7 +94,4 @@
Options +FollowSymLinks
DirectoryIndex index.html start.html
</Directory>
# Uncomment this if site if you use SSL only
#Header set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

View File

@ -40,9 +40,6 @@ server {
#uwsgi_param SCRIPT_FILENAME $document_root$sc;
#uwsgi_param SCRIPT_NAME $sc;
# Uncomment this if you use https only
#add_header Strict-Transport-Security "max-age=15768000";
}
# By default, access to this VHost is denied

View File

@ -44,9 +44,6 @@ ErrorDocument 503 http://auth.__DNSDOMAIN__/lmerror/503
# # an upper PerlHeaderParserHandler directive
# #PerlHeaderParserHandler Apache2::Const::DECLINED
#</Location>
# Uncomment this if site if you use SSL only
#Header set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

View File

@ -61,9 +61,6 @@ ErrorDocument 503 http://auth.__DNSDOMAIN__/lmerror/503
# # an upper PerlHeaderParserHandler directive
# #PerlHeaderParserHandler Apache2::Const::DECLINED
#</Location>
# Uncomment this if site if you use SSL only
#Header set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

View File

@ -51,9 +51,6 @@ ErrorDocument 503 http://auth.__DNSDOMAIN__/lmerror/503
# # an upper PerlHeaderParserHandler directive
# #PerlHeaderParserHandler Apache2::Const::DECLINED
#</Location>
# Uncomment this if site if you use SSL only
#Header set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

View File

@ -41,7 +41,7 @@ server {
fastcgi_pass unix:__FASTCGISOCKDIR__/llng-fastcgi.sock;
fastcgi_param LLTYPE reload;
# OR TO USE uWSGI
# Or with uWSGI
#include /etc/nginx/uwsgi_params;
#uwsgi_pass 127.0.0.1:5000;
#uwsgi_param LLTYPE reload;
@ -50,9 +50,6 @@ server {
# Client requests
location / {
deny all;
# Uncomment this if you use https only
#add_header Strict-Transport-Security "max-age=15768000";
}
# Uncomment this if status is enabled
@ -64,7 +61,7 @@ server {
# include /etc/nginx/fastcgi_params;
# fastcgi_pass unix:__FASTCGISOCKDIR__/llng-fastcgi.sock;
# fastcgi_param LLTYPE status;
# # OR TO USE uWSGI
# # Or with uWSGI
# #include /etc/nginx/uwsgi_params;
# #uwsgi_pass 127.0.0.1:5000;
# #uwsgi_param LLTYPE status;

View File

@ -95,7 +95,4 @@
Options +FollowSymLinks
DirectoryIndex index.html start.html
</Directory>
# Uncomment this if site if you use SSL only
#Header set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

View File

@ -114,7 +114,4 @@
Options +FollowSymLinks
DirectoryIndex index.html start.html
</Directory>
# Uncomment this if site if you use SSL only
#Header set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

View File

@ -98,7 +98,4 @@
Options +FollowSymLinks
DirectoryIndex index.html start.html
</Directory>
# Uncomment this if site if you use SSL only
#Header set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

View File

@ -29,15 +29,12 @@ server {
fastcgi_split_path_info ^(.*\.psgi)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
# OR TO USE uWSGI
# Or with uWSGI
#include /etc/nginx/uwsgi_params;
#uwsgi_pass 127.0.0.1:5000;
#uwsgi_param LLTYPE psgi;
#uwsgi_param SCRIPT_FILENAME $document_root$sc;
#uwsgi_param SCRIPT_NAME $sc;
# Uncomment this if you use https only
#add_header Strict-Transport-Security "max-age=15768000";
}
location / {

View File

@ -113,8 +113,5 @@
Header append Vary User-Agent env=!dont-vary
</IfModule>
</Location>
# Uncomment this if site if you use SSL only
#Header set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

View File

@ -144,8 +144,5 @@
Header append Vary User-Agent env=!dont-vary
</IfModule>
</Location>
# Uncomment this if site if you use SSL only
#Header set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

View File

@ -110,8 +110,5 @@
Header append Vary User-Agent env=!dont-vary
</IfModule>
</Location>
# Uncomment this if site if you use SSL only
#Header set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

View File

@ -5,9 +5,10 @@
# ~/CN=(?<CN>[^/]+) $CN;
#}
# FastCGI backend definition
# FastCGI/uWSGI backend definition
upstream llng_portal_upstream {
server unix:__FASTCGISOCKDIR__/llng-fastcgi.sock;
#server 127.0.0.1:5000;
}
server {
@ -44,9 +45,9 @@ server {
# Uncomment this if you use Auth SSL:
#fastcgi_param SSL_CLIENT_S_DN_CN $ssl_client_s_dn_cn;
# OR TO USE uWSGI
# Or with uWSGI
#include /etc/nginx/uwsgi_params;
#uwsgi_pass 127.0.0.1:5000;
#uwsgi_pass llng_portal_upstream;
#uwsgi_param LLTYPE psgi;
#uwsgi_param SCRIPT_FILENAME $document_root$sc;
#uwsgi_param SCRIPT_NAME $sc;
@ -56,30 +57,35 @@ server {
# REST/SOAP functions for sessions management (disabled by default)
location ~ ^/index.psgi/adminSessions {
fastcgi_pass llng_portal_upstream;
#uwsgi_pass llng_portal_upstream;
deny all;
}
# REST/SOAP functions for proxy auth and password reset (disabled by default)
location ~ ^/index.psgi/proxy {
fastcgi_pass llng_portal_upstream;
#uwsgi_pass llng_portal_upstream;
deny all;
}
# REST/SOAP functions for sessions access (disabled by default)
location ~ ^/index.psgi/sessions {
fastcgi_pass llng_portal_upstream;
#uwsgi_pass llng_portal_upstream;
deny all;
}
# REST/SOAP functions for configuration access (disabled by default)
location ~ ^/index.psgi/config {
fastcgi_pass llng_portal_upstream;
#uwsgi_pass llng_portal_upstream;
deny all;
}
# REST/SOAP functions for notification insertion (disabled by default)
location ~ ^/index.psgi/notification {
fastcgi_pass llng_portal_upstream;
#uwsgi_pass llng_portal_upstream;
deny all;
}
@ -88,9 +94,6 @@ server {
index index.psgi;
location / {
try_files $uri $uri/ =404;
# Uncomment this if you use https only
#add_header Strict-Transport-Security "max-age=15768000";
}
location /static/ {

View File

@ -41,7 +41,4 @@ PerlModule Lemonldap::NG::Handler::ApacheMP2::Menu
<IfModule mod_dir.c>
DirectoryIndex index.pl index.html
</IfModule>
# Uncomment this if site if you use SSL only
#Header set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

View File

@ -41,7 +41,4 @@ PerlModule Lemonldap::NG::Handler::ApacheMP2::Menu
<IfModule mod_dir.c>
DirectoryIndex index.pl index.html
</IfModule>
# Uncomment this if site if you use SSL only
#Header set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

View File

@ -36,7 +36,4 @@ PerlModule Lemonldap::NG::Handler::ApacheMP2::Menu
<IfModule mod_dir.c>
DirectoryIndex index.pl index.html
</IfModule>
# Uncomment this if site if you use SSL only
#Header set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

View File

@ -32,14 +32,17 @@ server {
#fastcgi_buffers 32 32k;
# OR TO USE uWSGI
# Or with uWSGI
#include /etc/nginx/uwsgi_params;
#uwsgi_pass 127.0.0.1:5000;
# Drop post datas
#uwsgi_pass_request_body off;
#uwsgi_param CONTENT_LENGTH "";
# Keep original hostname
#uwsgi_param HOST $http_host;
# Keep original request (LLNG server will receive /lmauth)
#uwsgi_param X_ORIGINAL_URI $original_uri;
# Improve performances
## Improve performances
#uwsgi_buffer_size 32k;
#uwsgi_buffers 32 32k;
}
@ -88,9 +91,6 @@ server {
# OR in the corresponding block
#fastcgi_param HTTP_COOKIE $lmcookie;
# Uncomment this if you use https only
#add_header Strict-Transport-Security "max-age=15768000";
# Set REMOTE_USER and REMOTE_CUSTOM (for FastCGI apps only)
#fastcgi_param REMOTE_USER $lmremote_user;
#fastcgi_param REMOTE_CUSTOM $lmremote_custom;

171
changelog
View File

@ -1,3 +1,174 @@
lemonldap-ng (2.0.15.1) jammy; urgency=medium
* Bugs:
* #2796: "Internal Server Error" during MFA flow when using LDAP as UserDB in 2.0.15
-- Clément <clem.oudot@gmail.com> Thu, 15 Sep 2022 15:58:47 +0200
lemonldap-ng (2.0.15) jammy; urgency=medium
* Bugs:
* #2615: Redirection issue with Issue SAML + ForceAuthn=true + Kerberos authentication
* #2650: Empty SCRIPT_NAME breaks the portal
* #2690: Second factor logo/label not used on registration screen
* #2708: Auth::OpenIDConnect redirects in a loop when invalid JSON metadata is provided
* #2712: 2fSelfRegistration == 0 + 2fActivation == 1 leads to registrable second factor being presented every time
* #2714: Session upgrade link in 2FA manager not working
* #2716: 2FA registration does not auto-redirect to only available provider after deleting an existing 2FA
* #2724: one importMetadata Script default option isn't correct
* #2733: Allowing ALL special characters does not work with reset password form
* #2742: convertConfig no error but nothing converted
* #2758: [CVE-2022-37186] Session destroyed on portal but still valid on handlers while there is activity
* #2760: Userinfo does not show updated attributs when using Offline sessions
* #2769: missing handler logs with default Nginx + LemonLDAP
* #2772: translation overrides from skin json files are not used when sending emails
* #2773: translation override from skin bypasses llng.ini
* #2785: Invalid <Organization> in SAML metadata can crash portal startup
* #2787: Status: Unknown command line during OIDC flow
* #2789: $portal->templateDir causes skin mix-up
* #2791: After token timeout during 2FA flow, login form is left in broken state
* #2793: samlGotAuthnRequest cannot modify $login->request when signature validation is enabled
* New features:
* #2491: Use environment variables placeholder in lemonldap json configuration
* #2713: handle refresh tokens in Auth::OpenIDConnect
* #2737: remember previous authentication choice
* #2763: Install LL::NG on EL9
* Improvements:
* #2607: bypass OIDC logout confirmation
* #2674: Add HSTS as new security parameter in the Manager
* #2692: New API for CAPTCHA plugins
* #2719: importMetadata should handle conflicts between multiple federations
* #2720: importMetadata should be configurable
* #2723: Cannot specify custom urn:oasis:names:tc:SAML:2.0:assertion:AuthnContextClassRef values for LemonLDAP IdPs
* #2725: Add session data to oidcGenerateUserInfoResponse
* #2726: Add a session variable for used 2F module
* #2732: Add userLogger event when a specific 2FA is selected
* #2739: Provide a specific package to install LLNG FastCGI client
* #2745: portalEnablePasswordDisplay is not used in password change form
* #2746: SAML metadata without SingleLogoutService leads to error at logout
* #2753: Add IDP selection rules for CAS and OIDC
* #2755: OIDC : issue on token endpoint with method client_secret_basic
* #2756: Allow customization of portal JS code with jQuery events
* #2757: Allow admins to change the 2FA timeout
* #2759: Append a go-back-to-top button
* #2761: Append an option to customize Manager CSS
* #2762: Add re-send option to code-based OTPs
* #2768: Add new hooks on Access Token refresh
* #2775: Notification process can not be continued with JSON response
* #2780: New lemonldap-ng-cli subcommand: merge
* #2782: Notifications are not sorted by sessions explorer and epoch is not converted into local date
* #2784: Allow history fields to be translated in templates
* Templates:
* #2690: Second factor logo/label not used on registration screen
* #2714: Session upgrade link in 2FA manager not working
* #2737: remember previous authentication choice
* #2745: portalEnablePasswordDisplay is not used in password change form
* #2750: Option to define the favicon
* #2759: Append a go-back-to-top button
* #2761: Append an option to customize Manager CSS
-- Clément <clem.oudot@gmail.com> Fri, 09 Sep 2022 10:13:43 +0200
lemonldap-ng (2.0.14) focal; urgency=medium
* Bugs:
* #2519: first authentication returns 500 code after inactivity period
* #2566: No configuration available in fresh LemonLDAP 2.0.12
* #2594: Double slashes in _pdata->{_url} when LLNG is OIDC RP
* #2595: Portal does not run correctly with portalRequireOldPassword=0
* #2596: [security:low] open redirect in CAS gateway mode
* #2597: External password reset URL is called with skin= and url= parameters
* #2600: RESTProxy authentication does not work with AuthChoice-enabled internal Portal
* #2603: Saving configuration drops OIDC scope rules
* #2606: FindUser plugin: SpoofId field is not updated if a value has been already set before the Ajax request
* #2612: [Security: low, CVE-2021-40874] RESTServer pwdConfirm always returns true with Combination + Kerberos
* #2613: ProxyAuth cookie name can not be modified
* #2616: Login is not remembered when password is incorrect
* #2618: DevOps handler does not work if RULES_URL uWSGI/FastCGI parameter is set
* #2620: Net::LDAP::Control::PasswordPolicy is not always loaded
* #2622: Fail oauth2 grants when resulting scope is empty
* #2626: Portal fatal errors cause "Conflict detected between 2 extensions, aborting 1 route" message to appear in logs
* #2632: Handler::Server::Nginx does not use logger config from lemonldap-ng.ini
* #2637: Error with default locationRules
* #2645: importMetadata does not set NameIDFormat to "persistent" for new providers
* #2648: "Authentication module succeed but has not set $req->user" when using SAML Artifact mode with some, but not all IDPs
* #2655: 'afterData' plugins loaded after Impersonation will be never executed
* #2656: CAS: multiple proxies is not correctly implemented
* #2658: Macros based on '_XXX' and authenticationLevel attributes are not computed by refresh function
* #2660: Combination is not compatible with LDAP password policies
* #2663: Radius authentication fails when radius used as authentication module
* #2671: xss attack detected on a relayState parameter
* #2675: Auth::Custom calls module init twice
* #2676: UserDB::Custom and Password::Custom loads module twice and calls init three times
* #2677: *::Custom do not allow config overrides
* #2678: Auth::Custom getDisplayType is broken with choice
* #2682: Fails to create password-protected X509 certificates with OpenSSL 3.0
* #2689: REST server: 400 bad request with DELETE /session/my
* #2691: Error when using has2f in a manager rule
* #2693: "Status: Unknown command line -> " log line for each SKIP and EXPIRED accesses
* #2703: OIDC RP menu attributes name do not refresh live
* New features:
* #1411: Web Authentication API (webauthn)
* #2325: "Warn on new network location" plugin
* #2679: CheckDevOps: Append an option to check if used attributes are existing
* #2686: Web service for application list
* Improvements:
* #1714: Check logLevel value
* #2277: pdata cookie is not removed if SAML flow fails
* #2457: Do not translate OIDC RP exported attributes
* #2476: $groups is not initialize for at least LDAP authentication
* #2508: Look configuration timestamp to dismiss cache
* #2558: Add a new portal error code for Auth::OIDC issues
* #2565: Adding per-request information in logs
* #2570: RGAA: Adding a role attribute into messages
* #2577: RGAA: placeholder only should not be used as label
* #2591: stayconnected plugin: allow to disable browser fingerprint check and update documentation
* #2593: Contextual / Adaptive authentication / Risk-based authentication
* #2599: Certificate reset templates are not translated
* #2601: RESTProxy authentication does not support Impersonation
* #2602: Export OIDC grant type in rules
* #2604: Append an option to normalize HTTP headers with CheckDevOps plugin
* #2605: llnglanguage cookie will be rejected if sameSite attribute is not set
* #2609: Better history management for plugins
* #2614: display precise error while sending direct SOAP SAML message
* #2617: SafeJail must be enabled with CheckDevOps plugin
* #2619: Brazilian translation
* #2621: SAML: HTTP-Artifact mode should be discouraged
* #2625: Add an option to encrypt TOTP secrets
* #2627: Append an option in Manager to be able to set RULES_URL param
* #2638: Redirect to 2fregisters is missing a slash
* #2644: No error displayed in logs in DevOps Handler when rules file can't be downloaded
* #2646: bruteForceProtectionMaxAge and bruteForceProtectionMaxLockTime missing from manager
* #2647: Display logins history with CheckUser plugin
* #2649: Portal plugins should not require an "init" method
* #2651: Hebrew Translation
* #2654: CAS temporary tickets should have a short expiration time
* #2657: Hidden attributes, custom functions and plugins declarations are inconsistent
* #2662: CheckUser plugin: Append a rule to allow some users to display hidden attributes
* #2664: impossible to use getModule in the Password modules
* #2667: Add RP confkey to oidcGenerateUserInfoResponse plugin hook
* #2668: CheckDevOps: prevent portal crash/loop if a bad rules.json file is provided
* #2672: DBI password hash list is too restrictive
* #2673: Allow to configure multiple service URL per CAS application
* #2679: CheckDevOps: Append an option to check if used attributes are existing
* #2683: Possibility to set an activation rule for "remember me" option
* #2685: DevOps handler uses default HTTPS redirection if no VH is defined
* #2694: Chrome warns about compromised data when using form replay
* #2698: Avoid useless warning messages in log
* Templates:
* #2325: "Warn on new network location" plugin
* #2570: RGAA: Adding a role attribute into messages
* #2577: RGAA: placeholder only should not be used as label
* #2597: External password reset URL is called with skin= and url= parameters
-- Clément <clem.oudot@gmail.com> Sat, 19 Feb 2022 17:49:18 +0100
lemonldap-ng (2.0.13) focal; urgency=medium
* Bugs:

91
codemeta.json Normal file
View File

@ -0,0 +1,91 @@
{
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
"@type": "SoftwareSourceCode",
"license": "https://spdx.org/licenses/GPL-2.0-or-later",
"codeRepository": "https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng",
"contIntegration": "https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/-/pipelines",
"dateCreated": "2004-01-01",
"datePublished": "2010-12-06",
"dateModified": "2022-09-15",
"downloadUrl": "https://lemonldap-ng.org/download.html",
"issueTracker": "https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/-/issues",
"name": "LemonLDAP::NG",
"version": "2.0.15.1",
"description": "LemonLDAP::NG is a complete and modular Web-SSO system that can run with reverse-proxies or directly on application webservers. It can be used in conjunction with OpenID-Connect, CAS and SAML systems as identity or service provider. It can also be used as proxy between those federation systems.\n\nIt manages both authentication and authorization and provides headers for accounting. So you can have a full AAA protection. Authorizations are built by associating a regular expression and a rule. Regular expression is applied on the requested URL and the rule calculates if the user is authorized.",
"applicationCategory": "WebSSO",
"developmentStatus": "active",
"keywords": [
"2FA",
"sso",
"ldap",
"authentication",
"authorization",
"cas",
"saml",
"openid connect",
"access management",
"security"
],
"programmingLanguage": [
"Perl",
"Javascript"
],
"operatingSystem": [
"Linux"
],
"author": [
{
"@type": "Person",
"givenName": "Xavier",
"familyName": "Guimard",
"email": "yadd@debian.org"
},
{
"@type": "Person",
"givenName": "Clément",
"familyName": "Oudot",
"email": "clement@oodo.net"
},
{
"@type": "Person",
"@id": "https://orcid.org/0000-0001-5215-9046",
"givenName": "Christophe",
"familyName": "Maudoux",
"email": "christophe.maudoux@cnam.fr",
"affiliation": {
"@type": "Organization",
"name": "Cnam/Cedric - ROC Team"
}
},
{
"@type": "Person",
"givenName": "Maxime",
"familyName": "Besson",
"email": "maxime.besson@worteks.com"
}
],
"contributor": [
{
"@type": "Person",
"givenName": "David",
"familyName": "Coutadeur"
},
{
"@type": "Person",
"givenName": "Alexandre",
"familyName": "Karim"
},
{
"@type": "Person",
"givenName": "Xavier",
"familyName": "Bachelot",
"email": "xavier@bachelot.org"
},
{
"@type": "Person",
"givenName": "Soisik",
"familyName": "Froger",
"email": "soisik.froger@worteks.com"
}
]
}

21
debian/changelog vendored
View File

@ -1,3 +1,24 @@
lemonldap-ng (2.0.15.1-1) unstable; urgency=medium
* New release. See changes on our website:
https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng
-- Clement OUDOT <clement@oodo.net> Thu, 15 Sep 2022 22:00:00 +0100
lemonldap-ng (2.0.15-1) unstable; urgency=medium
* New release. See changes on our website:
https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng
-- Clement OUDOT <clement@oodo.net> Fri, 09 Sep 2022 22:00:00 +0100
lemonldap-ng (2.0.14-1) unstable; urgency=medium
* New release. See changes on our website:
https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng
-- Clement OUDOT <clement@oodo.net> Sat, 19 Feb 2022 22:00:00 +0100
lemonldap-ng (2.0.13-1) unstable; urgency=medium
* New release. See changes on our website:

43
debian/control vendored
View File

@ -5,7 +5,7 @@ Section: perl
Priority: optional
Build-Depends: debhelper (>= 10),
po-debconf
Build-Depends-Indep: gsfonts <!nocheck>,
Build-Depends-Indep: fonts-urw-base35 <!nocheck> | gsfonts <!nocheck>,
libapache-session-perl <!nocheck>,
libauth-yubikey-webclient-perl <!nocheck>,
libauthen-oath-perl <!nocheck>,
@ -19,6 +19,8 @@ Build-Depends-Indep: gsfonts <!nocheck>,
libcrypt-openssl-x509-perl <!nocheck>,
libcrypt-urandom-perl <!nocheck>,
libcrypt-rijndael-perl <!nocheck>,
libcrypt-u2f-server-perl <!nocheck>,
libdatetime-format-rfc3339-perl <!nocheck>,
libdbd-sqlite3-perl <!nocheck>,
libdbi-perl <!nocheck>,
libdigest-hmac-perl <!nocheck>,
@ -26,15 +28,18 @@ Build-Depends-Indep: gsfonts <!nocheck>,
libgd-securityimage-perl <!nocheck>,
libglib-perl <!nocheck>,
libgssapi-perl <!nocheck>,
libhash-merge-simple-perl <!nocheck>,
libhtml-template-perl <!nocheck>,
libimage-magick-perl <!nocheck>,
libio-string-perl <!nocheck>,
libipc-run-perl <!nocheck>,
liblist-moreutils-perl <!nocheck>,
libjson-perl <!nocheck>,
libjson-xs-perl <!nocheck>,
liblasso-perl <!nocheck>,
libmime-tools-perl <!nocheck>,
libmouse-perl <!nocheck>,
libclass-xsaccessor-perl <!nocheck>,
libnet-cidr-lite-perl <!nocheck>,
libnet-ldap-perl <!nocheck>,
libio-socket-timeout-perl <!nocheck>,
@ -46,12 +51,13 @@ Build-Depends-Indep: gsfonts <!nocheck>,
libsoap-lite-perl <!nocheck>,
libstring-random-perl <!nocheck>,
libtest-mockobject-perl <!nocheck>,
libtest-pod-perl <!nocheck>,
libtest-output-perl <!nocheck>,
libtest-pod-perl <!nocheck>,
libtext-unidecode-perl <!nocheck>,
libtime-fake-perl <!nocheck>,
libunicode-string-perl <!nocheck>,
liburi-perl <!nocheck>,
libhttp-message-perl <!nocheck>,
libwww-perl <!nocheck>,
libxml-libxml-perl <!nocheck>,
libxml-libxslt-perl <!nocheck>,
@ -60,7 +66,7 @@ Build-Depends-Indep: gsfonts <!nocheck>,
python3-sphinx,
python3-sphinx-bootstrap-theme,
perl
Standards-Version: 4.6.0
Standards-Version: 4.6.1
Vcs-Browser: https://salsa.debian.org/perl-team/modules/packages/lemonldap-ng
Vcs-Git: https://salsa.debian.org/perl-team/modules/packages/lemonldap-ng.git
Homepage: https://lemonldap-ng.org/
@ -94,6 +100,7 @@ Architecture: all
Section: doc
Depends: ${misc:Depends}
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: foreign
Description: Lemonldap::NG Web-SSO system documentation
Lemonldap::NG is a complete Web-SSO system that can run with reverse-proxies
or directly on application webservers. It can be used in conjunction with
@ -110,7 +117,6 @@ Description: Lemonldap::NG Web-SSO system documentation
Package: lemonldap-ng-fastcgi-server
Architecture: all
Section: web
Pre-Depends: ${misc:Pre-Depends}
Depends: ${misc:Depends},
${perl:Depends},
lsb-base,
@ -120,6 +126,7 @@ Depends: ${misc:Depends},
libplack-perl
Recommends: libhttp-parser-xs-perl,
nginx-extras | nginx
Pre-Depends: ${misc:Pre-Depends}
Description: Lemonldap::NG FastCGI server
Lemonldap::NG is a complete Web-SSO system that can run with reverse-proxies
or directly on application webservers. It can be used in conjunction with
@ -134,11 +141,22 @@ Description: Lemonldap::NG FastCGI server
Lemonldap::NG FastCGI server provides a Nginx auth_request server that handles
also LLNG Portal and Manager.
Package: liblemonldap-ng-ssoaas-apache-client-perl
Architecture: all
Section: web
Depends: ${misc:Depends},
${perl:Depends}
Breaks: liblemonldap-ng-handler-perl (<< 2.0.14~)
Multi-Arch: foreign
Description: Lemonldap::NG SSOaaS client for Apache
Lemonldap::NG is a complete Web-SSO system that provides a SSO-as-a-Service
system, natively usable with Nginx. Lemonldap::NG::SSOaaS::Apache::Client
permits one to enroll an Apache server into Lemonldap::NG's SSOaaS service.
Package: lemonldap-ng-uwsgi-app
Architecture: all
Section: web
Depends: ${misc:Depends},
${perl:Depends},
liblemonldap-ng-handler-perl (= ${binary:Version})
Recommends: libhttp-parser-xs-perl,
uwsgi-plugin-psgi
@ -204,6 +222,7 @@ Architecture: all
Depends: ${misc:Depends},
${perl:Depends},
debconf,
perl-doc,
libapache-session-perl,
libcache-cache-perl,
libconfig-inifiles-perl,
@ -215,6 +234,7 @@ Depends: ${misc:Depends},
libjson-perl,
libjson-xs-perl,
libmouse-perl,
libclass-xsaccessor-perl,
libplack-perl,
liburi-perl,
libwww-perl
@ -230,7 +250,6 @@ Suggests: libconvert-base32-perl,
libsoap-lite-perl,
libxml-libxml-perl,
libxml-simple-perl
Conflicts: liblemonldap-ng-cli-perl
Description: Lemonldap::NG common files
Lemonldap::NG is a complete Web-SSO system that can run with reverse-proxies
or directly on application webservers. It can be used in conjunction with
@ -254,6 +273,7 @@ Depends: ${misc:Depends},
libcrypt-openssl-rsa-perl,
libemail-date-format-perl,
liblemonldap-ng-handler-perl (= ${binary:Version}),
libhash-merge-simple-perl,
lemonldap-ng-fastcgi-server (= ${binary:Version}) | lemonldap-ng-uwsgi-app (= ${binary:Version}) | apache2 | httpd-cgi
Recommends: lemonldap-ng-doc (= ${binary:Version}),
libxml-libxml-perl,
@ -286,7 +306,8 @@ Depends: ${misc:Depends},
libregexp-assemble-perl,
liblist-moreutils-perl,
libemail-date-format-perl
Recommends: gsfonts,
Recommends: fonts-urw-base35 | gsfonts,
libauthen-webauthn-perl,
libcrypt-openssl-bignum-perl,
libconvert-base32-perl,
libio-string-perl,
@ -297,19 +318,19 @@ Recommends: gsfonts,
libio-socket-timeout-perl,
libunicode-string-perl
Suggests: gpg,
libauthen-radius-perl,
libcrypt-u2f-server-perl,
libdbi-perl,
libglib-perl,
libgssapi-perl,
libimage-magick-perl,
liblasso-perl,
libnet-facebook-oauth2-perl (>= 0.10),
libnet-facebook-oauth2-perl,
libnet-openid-consumer-perl,
libnet-openid-server-perl,
libnet-oauth-perl,
libsoap-lite-perl,
libweb-id-perl,
libauthen-radius-perl,
slapd
Pre-Depends: debconf
Description: Lemonldap::NG authentication portal part
@ -326,5 +347,5 @@ Description: Lemonldap::NG authentication portal part
Lemonldap::NG::Portal provides the authentication portal.
.
You may have to install some suggested packages depending on plugins you
enabled. For example, libgd-securityimage-perl and gsfonts are needed if you
want to use Captcha, libcrypt-u2f-server-perl for U2F features,...
enabled. For example, libgd-securityimage-perl and fonts-urw-base35 are needed
if you want to use Captcha, libcrypt-u2f-server-perl for U2F features,...

57
debian/copyright vendored
View File

@ -4,22 +4,22 @@ Upstream-Contact: https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/issues
Source: https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/tags?sort=updated_desc
Files: *
Copyright: 2005-2020, Xavier Guimard <yadd@debian.org>
2006-2020, Clement Oudot <clem.oudot@gmail.com>
Copyright: 2005-2022, Xavier Guimard <yadd@debian.org>
2006-2022, Clement Oudot <clem.oudot@gmail.com>
2018-2022, Christophe Maudoux <chrmdx@gmail.com>
2019-2022, Maxime Besson <maxime.besson@worteks.com>
2008, Mikael Ates <mikael.ates@univ-st-etienne.fr>
2008-2011, Thomas Chemineau <thomas.chemineau@gmail.com>
2012-2013, Sandro Cazzaniga <cazzaniga.sandro@gmail.com>
2012-2015, François-Xavier Deltombe <fxdeltombe@gmail.com>
2012-2019, David Coutadeur <david.coutadeur@gmail.com>
2018-2020, Christophe Maudoux <chrmdx@gmail.com>
2019-2020, Maxime Besson <maxime.besson@worteks.com>
2012-2021, David Coutadeur <david.coutadeur@gmail.com>
2019, Soisik Frogier <soisik.froger@worteks.com>
2019, Mame Dieynaba Sene <msene@linagora.com>
2019, Antoine Rosier <lemonldap@mon-refuge.fr>
2005-2020, Gendarmerie nationale <https://www.gendarmerie.interieur.gouv.fr>
2019-2021, Antoine Rosier <lemonldap@mon-refuge.fr>
2005-2022, Gendarmerie nationale <https://www.gendarmerie.interieur.gouv.fr>
2006-2019, LINAGORA <info@linagora.com>
2015-2018, Savoir-faire Linux <contact@savoirfairelinux.com>
2018-2020, Worteks <info@worteks.com>
2018-2022, Worteks <info@worteks.com>
License: GPL-2+
Files: lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/PAM.pm
@ -33,17 +33,23 @@ Copyright: 2011, Tatsuhiko Miyagawa <miyagawa@bulknews.net>
License: Artistic or GPL-1+
Files: *.js
Copyright: 2005-2019, Xavier Guimard <yadd@debian.org>
2006-2019, Clement Oudot <clem.oudot@gmail.com>
Copyright: 2005-2022, Xavier Guimard <yadd@debian.org>
2006-2022, Clement Oudot <clem.oudot@gmail.com>
2008-2012, Thomas Chemineau <thomas.chemineau@gmail.com>
2018-2019, Christophe Maudoux <chrmdx@gmail.com>
2018-2022, Christophe Maudoux <chrmdx@gmail.com>
2019-2022, Maxime Besson <maxime.besson@worteks.com>
License: GPL-2+
Files: lemonldap-ng-portal/site/htdocs/static/bootstrap/webauthn.png
Copyright: James Cullum <https://github.com/JamesCullum>
License: WebAuthnLogoLicense
Files: lemonldap-ng-portal/site/htdocs/static/common/js/portal.js
Copyright: 2005-2019, Xavier Guimard <yadd@debian.org>
2006-2019, Clement Oudot <clem.oudot@gmail.com>
Copyright: 2005-2022, Xavier Guimard <yadd@debian.org>
2006-2022, Clement Oudot <clem.oudot@gmail.com>
2008-2012, Thomas Chemineau <thomas.chemineau@gmail.com>
2018-2019, Christophe Maudoux <chrmdx@gmail.com>
2018-2022, Christophe Maudoux <chrmdx@gmail.com>
2019-2022, Maxime Besson <maxime.besson@worteks.com>
License: GPL-2+
Comment: a little part of it comes from JQuery-UI examples
(https://snipplr.com/view/29434/)
@ -1271,3 +1277,26 @@ License: BSD-3-clause
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License: WebAuthnLogoLicense
How to Use These Logos
.
Do these awesome things:
.
* Use the WebAuthn logo to link to WebAuthn specs or webauthn.org
* Use the WebAuthn logo to show that your product or project has built-in WebAuthn integration
* Use the WebAuthn logo in a blog post or news article about WebAuthn
.
Please don't do these things:
.
x Use the WebAuthn logo for your applications icon
x Create a modified version of the WebAuthn logo
x Integrate the WebAuthn logo into your logo
x Use any WebAuthn artwork without permission
x Sell any WebAuthn artwork without permission
x Change the colors, dimensions or add your own text/images
.
Please contact me
.
* If you want to use artwork not included in this repository
* If you want to use these images in a video/mainstream media

View File

@ -14,7 +14,7 @@ with a quick sed command. For example, we change it to ow2.org:
2.1 - Apache
Enable the components you've installed:
Enable installed components:
# Portal
a2ensite portal-apache2.conf
@ -37,7 +37,7 @@ Then restart Apache:
2.2 - Nginx
Enable the components you've installed:
Enable installed components:
cd /etc/nginx/sites-enabled
@ -57,16 +57,16 @@ Enable the components you've installed:
# Test site
ln -s ../site-available/test-nginx.conf
Customize then, then reload nginx
Customize them, then reload nginx
service nginx reload
nginx -s reload
3 - Check your DNS
------------------
Be sure that your browser can join (adapt it with your domain):
- auth.example.com : the authentication portal
- manager.example.com: the configuration interface
Be sure that your browser can reach (adapt it with your domain):
- auth.example.com : Authentication portal
- manager.example.com : Configuration interface
4 - Connect to the manager
--------------------------
@ -88,9 +88,9 @@ following accounts:
6 - Base configuration file
---------------------------
The configuration is managed by the manager with the exception of some basic
parameters such as the storage type configuration. These parameters are defined
in the file /etc/lemonldap-ng/lemonldap-ng.ini.
Configuration is managed by the Manager except some basic parameters
such as storage type configuration. These parameters are defined
in /etc/lemonldap-ng/lemonldap-ng.ini file.
This file can also be used to override the global configuration locally

View File

@ -2,6 +2,7 @@ etc/lemonldap-ng/lemonldap-ng.ini
etc/lemonldap-ng/for_etc_hosts
usr/share/man/man1/convertConfig.1p
usr/share/man/man1/convertSessions.1p
usr/share/man/man1/encryptTotpSecrets.1p
usr/share/man/man1/importMetadata.1p
usr/share/man/man1/lemonldap-ng-cli.1p
usr/share/man/man1/lemonldap-ng-sessions.1p
@ -11,6 +12,7 @@ usr/share/perl5/Lemonldap/NG/Common*
usr/share/lemonldap-ng/ressources
usr/share/lemonldap-ng/bin/convertConfig
usr/share/lemonldap-ng/bin/convertSessions
usr/share/lemonldap-ng/bin/encryptTotpSecrets
usr/share/lemonldap-ng/bin/importMetadata
usr/share/lemonldap-ng/bin/lemonldap-ng-sessions
usr/share/lemonldap-ng/bin/lmMigrateConfFiles2ini

View File

@ -0,0 +1,2 @@
usr/share/perl5/Lemonldap/NG/SSOaaS/Apache
usr/share/man/man3/Lemonldap::NG::SSOaaS::Apache*

1
debian/rules vendored
View File

@ -31,6 +31,7 @@ override_dh_auto_build:
override_dh_auto_install:
$(MAKE) install \
CHOWN=true \
DESTDIR=$(CURDIR)/debian/tmp \
PREFIX=/usr \
LMPREFIX=/usr/share/lemonldap-ng \

View File

@ -764,7 +764,7 @@
"type" : "object",
"properties" : {
"service" : {
"type" : "string"
"type" : "array"
},
"userAttribute" : {
"type" : "string",
@ -880,6 +880,9 @@
"type" : "string",
"format" : "url"
},
"logoutBypassConfirm" : {
"type" : "boolean"
},
"clientSecret" : {
"type" : "string",
"format" : "password"
@ -1269,7 +1272,7 @@
"type" : {
"type" : "string",
"description" : "The type of token in use",
"example" : "TOTP, U2F, UBK (Yubikey)"
"example" : "TOTP, U2F, UBK (Yubikey), WebAuthn"
},
"name" : {
"type" : "string",

View File

@ -4,7 +4,7 @@ Adaptative Authentication Level
Presentation
------------
A user obtain an authentication level depending on which authentication
A user reaches an authentication level depending on which authentication
module was used, and eventually which second factor module.
This plugin allows to adapt this authentication level depending on
@ -23,7 +23,7 @@ they would then not be forced to use 2FA to access the strategic application.
Configuration
-------------
This plugin is enabled when at least one rule is defind.
This plugin is enabled when at least one rule is defined.
To configure rules, go in ``General Parameters`` > ``Plugins`` >
``Adapative Authentication Level``.
@ -39,7 +39,7 @@ You can then create rules with these fields:
.. tip::
By example, to add 3 to authentication level for users from 192.168.0.0/24 network:
By example, to add 3 to authentication level for users from 192.168.0.0/16 network:
- Rule: ``$env->{REMOTE_ADDR} =~ /^192\.168\./``
- Value: ``+3``

View File

@ -10,6 +10,7 @@ Applications
applications/awx
applications/bugzilla
applications/bigbluebutton
applications/confluence
applications/cornerstone
applications/discourse
applications/django
@ -26,9 +27,11 @@ Applications
applications/guacamole
applications/humhub
applications/iparapheur
applications/itsm-ng
applications/jitsimeet
applications/liferay
applications/limesurvey
applications/mailman
applications/matrix
applications/mattermost
applications/mediawiki
@ -37,6 +40,7 @@ Applications
applications/obm
applications/odoo
applications/office365
applications/opencti
applications/publik
applications/phpldapadmin
applications/redmine
@ -94,6 +98,7 @@ Application Configuration
.. image:: applications/logo-awx.png :doc:`AWX (Ansible Tower)<applications/awx>`
.. image:: applications/bigbluebutton-logo.png :doc:`BigBlueButton<applications/bigbluebutton>`
.. image:: applications/bugzilla_logo.png :doc:`Bugzilla<applications/bugzilla>`
.. image:: applications/confluence.png :doc:`Confluence<applications/confluence>` ✔ ✔
.. image:: applications/csod_logo.png :doc:`Cornerstone<applications/cornerstone>`
.. image:: applications/discourse.jpg :doc:`Discourse<applications/discourse>` ✔ ✔
.. image:: applications/django_logo.png :doc:`Django<applications/django>`
@ -110,9 +115,11 @@ Application Configuration
.. image:: applications/guacamole.png :doc:`Apache Guacamole<applications/guacamole>` ✔ ✔ ✔
.. image:: applications/humhub_logo.png :doc:`HumHub<applications/humhub>`
.. image:: applications/iparapheur_logo.png :doc:`i-Parapheur<applications/iparapheur>`
.. image:: applications/itsm-ng.png :doc:`ITSM-NG<applications/itsm-ng>` ✔ ✔
.. image:: applications/logo-jitsimeet.png :doc:`Jitsi Meet<applications/jitsimeet>`
.. image:: applications/liferay_logo.png :doc:`Liferay<applications/liferay>`
.. image:: applications/limesurvey_logo.png :doc:`LimeSurvey<applications/limesurvey>`
.. image:: applications/mailman.jpg :doc:`Mailman<applications/mailman>`
.. image:: applications/matrix_logo.png :doc:`Matrix<applications/matrix>`
.. image:: applications/mattermost_logo.png :doc:`Mattermost<applications/mattermost>`
.. image:: applications/mediawiki_logo.png :doc:`Mediawiki<applications/mediawiki>`
@ -121,6 +128,7 @@ Application Configuration
.. image:: applications/obm_logo.png :doc:`OBM<applications/obm>`
.. image:: applications/odoo_logo.png :doc:`Odoo<applications/odoo>`
.. image:: applications/logo_office_365.png :doc:`Office 365<applications/office365>`
.. image:: applications/opencti.png :doc:`OpenCTI<applications/opencti>` ✔ ✔
.. image:: applications/logo-publik.png :doc:`Publik<applications/publik>`
.. image:: applications/phpldapadmin_logo.png :doc:`phpLDAPAdmin<applications/phpldapadmin>`
.. image:: applications/redmine_logo.png :doc:`Redmine<applications/redmine>`
@ -130,7 +138,7 @@ Application Configuration
.. image:: applications/simplesamlphp_logo.png :doc:`simpleSAMLphp<applications/simplesamlphp>`
.. image:: applications/spring_logo.png :doc:`Spring<applications/spring>`
.. image:: applications/symfony_logo.png :doc:`Symfony<applications/symfony>`
.. image:: applications/sympa_logo.png :doc:`Sympa<applications/sympa>`
.. image:: applications/sympa_logo.png :doc:`Sympa<applications/sympa>`
.. image:: applications/tomcat_logo.png :doc:`Tomcat<applications/tomcat>`
.. image:: applications/wekan-logo.png :doc:`Wekan<applications/wekan>`
.. image:: applications/wiki.js.svg :doc:`Wiki.js<applications/wikijs>`

View File

@ -14,7 +14,7 @@ using SAML 2.0 protocol.
You can find the Official AWX documentation about this topic here :
https://docs.ansible.com/ansible-tower/latest/html/administration/ent_auth.html#saml-authentication-settings
Please read it before the LLNG doc.
Please read it before the LL::NG doc.
Configuration
-------------
@ -34,8 +34,8 @@ saml in AWX, you can do it with your pki or with openssl on your machine
openssl req -x509 -newkey rsa:4096 -keyout saml-awx.key -out saml-awx.crt -days 3650 -nodes
LLNG SAML Certificate
~~~~~~~~~~~~~~~~~~~~~
LL::NG SAML Certificate
~~~~~~~~~~~~~~~~~~~~~~~
AWX need a certificate for the IDP signature, a public key won't work.
You can either just generate a certificate from the private key and put
@ -55,7 +55,7 @@ certificate with this command :
openssl req -new -x509 -days 3650 -key lemonldap.key > lemonldap.crt
After that, if you want, you can replace your SAML public key with this
certificate in LLNG configuration, this is not mandatory.
certificate in LL::NG configuration, this is not mandatory.
AWX
~~~
@ -153,7 +153,7 @@ This is the configuration of the IdP :
- "attr_last_name": "sn" SAML Attribute for the user last name
- "x509cert": "SOXGp....." the content of ``lemonldap.crt`` generated
in the "LLNG SAML Certificate" section
in the "LL::NG SAML Certificate" section
- "attr_username": "uid" SAML Attribute for the user username
- "entity_id": "https://auth.example.com/saml/metadata" entityID of the
IdP
@ -184,7 +184,7 @@ Go to "SAML service providers", click on "Add SAML SP" and name it as
you want (example : 'AWX')
In the new subtree 'AWX', open 'Metadata' and paste the content of the
AWX Metadatas, wich can be found at the
AWX Metadata, wich can be found at the
``SAML Service Provider Metadata URL`` in AWX :
https://awx.example.com/sso/metadata/saml/

View File

@ -64,12 +64,12 @@ Configure Bugzilla virtual host like other
internal;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/llng-fastcgi-server/llng-fastcgi.sock;
# Drop post datas
# Drop post data
fastcgi_pass_request_body off;
fastcgi_param CONTENT_LENGTH "";
# Keep original hostname
fastcgi_param HOST $http_host;
# Keep original request (LLNG server will received /llauth)
# Keep original request (LL::NG server will receive /lmauth)
fastcgi_param X_ORIGINAL_URI $original_uri;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@ -0,0 +1,65 @@
Confluence
==========
Presentation
------------
Confluence is a web-based corporate wiki developed by Atlassian.
It is compatible with SAML and OpenID Connect. This tutorial will focus on SAML.
Configuration
-------------
You must first configure LemonLDAP::NG as a :doc:`SAML Identity Provider<../idpsaml>`.
Configure SAML in Confluence
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In the SSO configuration page, choose SAML as the authentication method. And set the following parameters.
Don't forget to replace ``auth.example.com`` with your actual domain.
* Single sign on issuer: ``https://auth.example.com/saml/metadata``
* Identity provider single sign on URL: ``https://auth.example.com/saml/singleSignOn``
* X.509 certificate: You can find this certificate in the manager: SAML2 Service » Security » Signature » Public key
* Username mapping attribute: ``${uid}``
.. danger:: Make sure the certificate you copy into Confluence starts with BEGIN CERTIFICATE and not with BEGIN PRIVATE KEY
Write down the *Assertion Consumer Service URL* and the *Audience URL*, that Confluence is showing you, you will need it to configure LemonLDAP::NG
Configure LemonLDAP::NG
~~~~~~~~~~~~~~~~~~~~~~~
In the LemonLDAP::NG Manager, create a new *SAML Service Provider*
In *Metadata*, copy the following XML document, and don't forget to change ``AUDIENCE_URL`` and ``CONSUMER_SERVICE_URL`` the URLs with the values given by Confluence.
::
<?xml version="1.0"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
entityID="AUDIENCE_URL">
<md:SPSSODescriptor
AuthnRequestsSigned="false"
WantAssertionsSigned="false"
protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
<md:AssertionConsumerService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="CONSUMER_SERVICE_URL"
index="1"/>
</md:SPSSODescriptor>
</md:EntityDescriptor>
In *Exported Attributes*, add a new attribute:
* Variable name: the session variable containing user logins
* Attribute name: ``uid``
* Mandatory: ``On``
Finally, in *Options* » *Signature*, set
* Check SSO message signature: Off
* Check SLO message signature: Off

View File

@ -69,12 +69,12 @@ Configure Dokuwiki virtual host like other
internal;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/llng-fastcgi-server/llng-fastcgi.sock;
# Drop post datas
# Drop post data
fastcgi_pass_request_body off;
fastcgi_param CONTENT_LENGTH "";
# Keep original hostname
fastcgi_param HOST $http_host;
# Keep original request (LLNG server will received /llauth)
# Keep original request (LL::NG server will receive /lmauth)
fastcgi_param X_ORIGINAL_URI $original_uri;
}

View File

@ -66,12 +66,12 @@ Configure Drupal virtual host like other
internal;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/llng-fastcgi-server/llng-fastcgi.sock;
# Drop post datas
# Drop post data
fastcgi_pass_request_body off;
fastcgi_param CONTENT_LENGTH "";
# Keep original hostname
fastcgi_param HOST $http_host;
# Keep original request (LLNG server will received /llauth)
# Keep original request (LL::NG server will receive /lmauth)
fastcgi_param X_ORIGINAL_URI $original_uri;
}

View File

@ -192,7 +192,7 @@ Configuration sample using CLI:
oidcRPMetaDataOptions/humhub oidcRPMetaDataOptionsIDTokenSignAlg RS512 \
oidcRPMetaDataOptions/humhub oidcRPMetaDataOptionsIDTokenExpiration 3600 \
oidcRPMetaDataOptions/humhub oidcRPMetaDataOptionsAccessTokenExpiration 3600 \
oidcRPMetaDataOptions/humhub oidcRPMetaDataOptionsBypassConsent 1 && \
oidcRPMetaDataOptions/humhub oidcRPMetaDataOptionsBypassConsent 1
Migrate former local or ldap Humhub account to connect through SSO
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,64 @@
ITSM NG
=======
|image0|
Presentation
------------
`ITSM-NG <https://www.itsm-ng.org/>`__ is a fork of GLPI. The software's main features are: assets management, IT inventory, service desk, dashboards, KB...
ITSM-NG is compatible with OpenID Connect protocol.
OpenID Connect
--------------
Configuring ITSM-NG
^^^^^^^^^^^^^^^^^^^
The configuration steps are described on `ITSM-NG wiki <https://wiki.itsm-ng.org/oidc/>`__.
Just set LemonLDAP::NG main portail URL in ``Provider`` field, and define ``Client ID`` and ``Client Secret``.
Configuring LemonLDAP::NG
^^^^^^^^^^^^^^^^^^^^^^^^^
If not done yet, configure LemonLDAP::NG as an
:doc:`OpenID Connect service<..//openidconnectservice>`.
Then add ITSM-NG as a :doc:`new OpenID Connect Relying Party<..//idpopenidconnect>`
using the following parameters:
* **Client ID**: the same you set in ITSM-NG configuration
* **Client Secret**: the same you set in ITSM-NG configuration
* Add the following **exported attributes**:
* **given_name**: user's givenName attribute
* **family_name**: user's sn attribute
* **email**: user's mail attribute
* **Login and Logout Redirect URIs**: The main URL of ITSM-NG instance
Configuration sample using CLI:
::
$ /usr/libexec/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 \
addKey \
oidcRPMetaDataExportedVars/itsmng given_name givenName \
oidcRPMetaDataExportedVars/itsmng family_name sn \
oidcRPMetaDataExportedVars/itsmng email mail \
oidcRPMetaDataOptions/itsmng oidcRPMetaDataOptionsClientID myClientId \
oidcRPMetaDataOptions/itsmng oidcRPMetaDataOptionsClientSecret myClientSecret \
oidcRPMetaDataOptions/itsmng oidcRPMetaDataOptionsRedirectUris 'https://itsmng.example.com' \
oidcRPMetaDataOptions/itsmng oidcRPMetaDataOptionsPostLogoutRedirectUris 'https://itsmng.example.com' \
oidcRPMetaDataOptions/itsmng oidcRPMetaDataOptionsIDTokenSignAlg RS512 \
oidcRPMetaDataOptions/itsmng oidcRPMetaDataOptionsIDTokenExpiration 3600 \
oidcRPMetaDataOptions/itsmng oidcRPMetaDataOptionsAccessTokenExpiration 3600 \
oidcRPMetaDataOptions/itsmng oidcRPMetaDataOptionsBypassConsent 1
.. tip::
Declare all attributes that you need to map in ITSM-NG configuration. These attributes must be returned by the scopes requested by ITSM-NG.
.. |image0| image:: /applications/itsm-ng.png
:class: align-center

View File

@ -17,8 +17,7 @@ conference rooms.
The official documentation provides instructions on `how to configure
Jitsi Meet to use
Shibboleth <https://github.com/jitsi/jicofo/blob/master/doc/shibboleth.md>`__,
but with a little adaptation, it can work just as fine with
LemonLDAP::NG.
but with a little adaptation, it can work just as fine with LemonLDAP::NG.
Configuration
-------------
@ -60,7 +59,7 @@ configuration file:
::
# This block lets Nginx know how to contact the local LLNG handler
# This block lets Nginx know how to contact the local LL::NG handler
# for authentication
location = /lmauth {
internal;
@ -76,7 +75,7 @@ configuration file:
# You may want to change this is your goal is to make the whole Jitsi Meet instance private
location /login/ {
# Protect the current path with LLNG
# Protect the current path with LL::NG
auth_request /lmauth;
set $original_uri $uri$is_args$args;
auth_request_set $lmremote_user $upstream_http_lm_remote_user;

View File

@ -124,12 +124,12 @@ Configure Liferay virtual host like other
internal;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/llng-fastcgi-server/llng-fastcgi.sock;
# Drop post datas
# Drop post data
fastcgi_pass_request_body off;
fastcgi_param CONTENT_LENGTH "";
# Keep original hostname
fastcgi_param HOST $http_host;
# Keep original request (LLNG server will received /llauth)
# Keep original request (LL::NG server will receive /lmauth)
fastcgi_param X_ORIGINAL_URI $original_uri;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,67 @@
GNU Mailman
===========
.. image:: /applications/mailman.jpg
:class: align-center
Presentation
------------
`Mailman <http://www.list.org/>`__ is free software for managing electronic mail discussion and e-newsletter lists. Mailman is integrated with the web, making it easy for users to manage their accounts and for list owners to administer their lists. Mailman supports built-in archiving, automatic bounce processing, content filtering, digest delivery, spam filters, and more.
Mailman uses `django-allauth <https://www.intenct.nl/projects/django-allauth/>`__ for external authentication. And as of version 0.49, *django-allauth* is `compatible with LemonLDAP::NG <https://django-allauth.readthedocs.io/en/latest/providers.html#lemonldap-ng>`__
First, make sure you have set up LemonLDAP::NG 's
:doc:`OpenID Connect service<..//openidconnectservice>` and added
:doc:`a Relaying Party for your Mailman instance<..//idpopenidconnect>`
Mailman can use the following OpenID Connect attributes to fill the
user's profile:
* ``name``
* ``email``
* ``preferred_username``
Make sure you create a Client ID and a Client Secret for the Relying Party, and
that the mailman callback URL is allowed : ``https://mailman.example.com/accounts/lemonldap/login/callback/``
Mailman configuration
---------------------
.. note::
Make sure you are using at least version 0.49 of *django-allauth*
Provider activation
~~~~~~~~~~~~~~~~~~~
In the Mailman config (`settings.py`), enable the LemonLDAP::NG provider::
INSTALLED_APPS = [
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.lemonldap',
]
SOCIALACCOUNT_PROVIDERS = {
'lemonldap': {
'LEMONLDAP_URL': 'https://auth.example.com',
},
}
Provider configuration
~~~~~~~~~~~~~~~~~~~~~~
Browse to Mailman django administration, then add a new *Social application*
* Provider: *LemonLDAP::NG*
* Name: pick one
* Client id: must match the Client ID set in LemonLDAP::NG
* Secret key: must match the Client Secret set in LemonLDAP::NG
* Sites: choose which Mailman site can use LemonLDAP::NG
You should then be able to login on your Mailman site using LemonLDAP::NG

View File

@ -153,12 +153,12 @@ Configure MediaWiki virtual host like other
internal;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/llng-fastcgi-server/llng-fastcgi.sock;
# Drop post datas
# Drop post data
fastcgi_pass_request_body off;
fastcgi_param CONTENT_LENGTH "";
# Keep original hostname
fastcgi_param HOST $http_host;
# Keep original request (LLNG server will received /llauth)
# Keep original request (LL::NG server will receive /lmauth)
fastcgi_param X_ORIGINAL_URI $original_uri;
}

View File

@ -146,12 +146,12 @@ Edit also OBM configuration to enable LL::NG Handler:
internal;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/llng-fastcgi-server/llng-fastcgi.sock;
# Drop post datas
# Drop post data
fastcgi_pass_request_body off;
fastcgi_param CONTENT_LENGTH "";
# Keep original hostname
fastcgi_param HOST $http_host;
# Keep original request (LLNG server will received /llauth)
# Keep original request (LL::NG server will receive /lmauth)
fastcgi_param X_ORIGINAL_URI $original_uri;
}

View File

@ -21,7 +21,7 @@ Make sure you have :doc:`set up LemonLDAP::NG a SAML IDP <../samlservice>`
a certificate<samlservice-convert-certificate>`)
.. warning::
Odoo requires LemonLDAP::NG 2.0.14 in order to handle RelayState correctly
Odoo requires LL::NG 2.0.14 in order to handle RelayState correctly
Configuring Odoo
----------------
@ -60,7 +60,7 @@ To generate a key/certificate pair, you can run the following command::
openssl req -x509 -newkey rsa:4096 -keyout odoo-key.pem -out odoo-cert.pem -sha256 -days 3650 -nodes
* Select a signature method in the *Signature Algorithm*, such as *SIG_RSA_SHA256*
* If you do not want to use the email address to match between LLNG and Odoo accounts, set the *Identity Provider matching attribute* to a different value
* If you do not want to use the email address to match between LL::NG and Odoo accounts, set the *Identity Provider matching attribute* to a different value
* All other fields may be left to default values
Configuring users

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,121 @@
OpenCTI
=========
.. image:: /applications/opencti.png
:class: align-center
Presentation
------------
`OpenCTI <https://www.opencti.io/en/>`__ is an open source platform allowing organizations to manage their cyber threat intelligence knowledge and observables.
OpenCTI allows SSO via the SAML or OIDC protocols, this page explains how to setup the SAML protocol.
Configuring OpenCTI
-------------------
Prerequisites
~~~~~~~~~~~~~
First, generate a key/certificate pair for OpenCTI ::
openssl req -x509 -newkey rsa:4096 -keyout octi-saml-key.pem -out octi-saml-cert.pem -sha256 -days 3650 -nodes
Then, download the LemonLDAP::NG SAML metadata at https://auth.example.com/saml/metadata/idp
In this certificate, extract the ``ds:X509Certificate`` element inside the ``KeyDescriptor use="signing"`` element, and remove all spaces, you will get a long Base64 string that looks like ::
# On a single line, with no spaces
MIIFazCCA1OgAwIBAgIUDuUn+nT550rK0Qsej28PlQpZoFkwDQYJKoZIhvcN....
Do the same with ``octi-saml-key.pem`` in order to get a long Base64 string representing the OpenCTI signing key.
Regular installation
~~~~~~~~~~~~~~~~~~~~
In your OpenCTI configuration ::
"saml": {
"identifier": "saml",
"strategy": "SamlStrategy",
"config": {
"issuer": "opencti",
"entry_point": "https://auth.example.com/saml/singleSignOn",
"saml_callback_url": "https://opencti.example.com/auth/saml/callback",
"private_key": "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwg...",
"cert": "MIICmzCCAYMCBgF2Qt3X1zANBgkqhkiG9w0BAQsFADARMQ8w...",
"roles_management": {
"role_attributes": ["groups"],
"roles_mapping": ["my_lemonldap_group:Administrator"]
}
}
* ``private_key`` must contain the concatenated content of ``octi-saml-key.pem``
* ``cert`` must contain the concatenated content of the LemonLDAP::NG signing certificate, from SAML metadata
* The ``roles_management`` element is only useful if you want to automatically affect roles to your LemonLDAP::NG users depending on their groups.
Docker
~~~~~~
In a docker setup, add the following environment variables ::
- PROVIDERS__SAML__STRATEGY=SamlStrategy
- "PROVIDERS__SAML__CONFIG__LABEL=Login with SAML"
- PROVIDERS__SAML__CONFIG__ISSUER=opencti
- PROVIDERS__SAML__CONFIG__ENTRY_POINT=https://auth.example.com/saml/singleSignOn
- PROVIDERS__SAML__CONFIG__SAML_CALLBACK_URL=https://opencti.example.com/auth/saml/callback
- PROVIDERS__SAML__CONFIG__CERT=MIICmzCCAYMCBgF2Qt3X1zANBgkqhkiG9w0BAQsFADARMQ8w...
- PROVIDERS__SAML__CONFIG__PRIVATE_KEY=MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwg...
- "PROVIDERS__SAML__CONFIG__ROLES_MANAGEMENT__ROLE_ATTRIBUTES=[\"groups\"]"
- "PROVIDERS__SAML__CONFIG__ROLES_MANAGEMENT__ROLES_MAPPING=[\"my_lemonldap_group:Administrator\"]"
* ``PRIVATE_KEY`` must contain the concatenated content of ``octi-saml-key.pem``
* ``CERT`` must contain the concatenated content of the LemonLDAP::NG signing certificate, from SAML metadata
* The ``ROLES_MANAGEMENT`` variables are only useful if you want to automatically affect roles to your LemonLDAP::NG users depending on their groups.
Configuring LemonLDAP
---------------------
Generating OpenCTI metadata
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Edit the following template to create the metadata for OpenCTI ::
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<EntityDescriptor
entityID="opencti"
xmlns="urn:oasis:names:tc:SAML:2.0:metadata">
<SPSSODescriptor
AuthnRequestsSigned="true"
WantAssertionsSigned="true"
protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<KeyDescriptor use="signing"><ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:X509Data><ds:X509Certificate>
###paste the content of octi-saml-cert.pem here, without the BEGIN and END line###
</ds:X509Certificate></ds:X509Data></ds:KeyInfo></KeyDescriptor>
<AssertionConsumerService
index="0"
isDefault="true"
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://opencti.example.com/auth/saml/callback" />
</SPSSODescriptor>
</EntityDescriptor>
Don't forget to replace the ``Location=`` attribute and the content of ``X509Certificate``.
Adding OpenCTI::NG to LemonLDAP configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Add a new :ref:`new SAML Service Provider to the LemonLDAP::NG configuration<samlidp-register-sp>`
with the following parameters:
* **Metadata**
* Copy the Metadata generated at the previous step
* **Exported Attributes**
* variable name: ``groups``
* attribute name: ``groups``

View File

@ -68,12 +68,12 @@ Configure phpLDAPadmin virtual host like other
internal;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/llng-fastcgi-server/llng-fastcgi.sock;
# Drop post datas
# Drop post data
fastcgi_pass_request_body off;
fastcgi_param CONTENT_LENGTH "";
# Keep original hostname
fastcgi_param HOST $http_host;
# Keep original request (LLNG server will received /llauth)
# Keep original request (LL::NG server will receive /lmauth)
fastcgi_param X_ORIGINAL_URI $original_uri;
}

View File

@ -8,20 +8,67 @@ Presentation
`Sympa <http://www.sympa.org>`__ is a mailing list manager.
To configure SSO with Sympa, use **Magic authentication**: a special SSO
URL is protected by LL::NG, Sympa will display a button for users who
wants to use this feature.
To configure SSO with Sympa, you have the choice between:
* CAS
* **Magic authentication**: a special SSO URL is protected by LL::NG, Sympa will display a button for users who wants to use this feature.
We recommend to use CAS.
CAS
---
Sympa configuration
~~~~~~~~~~~~~~~~~~~
Edit the file "auth.conf", for example:
::
vi /etc/sympa/auth.conf
And fill it:
::
cas
base_url https://auth.example.com/cas
non_blocking_redirection on
auth_service_name SSO
ldap_host ldap.example.com:389
ldap_get_email_by_uid_filter (uid=[uid])
ldap_timeout 7
ldap_suffix dc=example,dc=com
ldap_scope sub
ldap_email_attribute mail
Restart services:
::
service sympa restart
service apache2 restart
See also `official documentation <https://sympa-community.github.io/manual/customize/cas.html>`__
LemonLDAP::NG configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Declare CAS application in the configuration, register the service URL.
No attributes are needed.
Magic authentication
--------------------
.. tip::
Since version 1.9 of LLNG, old Auto-Login feature has been
Since LL::NG 1.9, old Auto-Login feature has been
removed since it works only with Sympa-5 which has been deprecated
Configuration
-------------
Sympa configuration
~~~~~~~~~~~~~~~~~~~
@ -96,12 +143,12 @@ authentication URL.
internal;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/llng-fastcgi-server/llng-fastcgi.sock;
# Drop post datas
# Drop post data
fastcgi_pass_request_body off;
fastcgi_param CONTENT_LENGTH "";
# Keep original hostname
fastcgi_param HOST $http_host;
# Keep original request (LLNG server will received /llauth)
# Keep original request (LL::NG server will receive /lmauth)
fastcgi_param X_ORIGINAL_URI $original_uri;
}

View File

@ -30,6 +30,7 @@ theses :
* **OAUTH2_USERNAME_MAP**: ``sub``
* **OAUTH2_FULLNAME_MAP**: ``name``
* **OAUTH2_EMAIL_MAP**: ``email``
* **OAUTH2_REQUEST_PERMISSIONS**: ``openid profile email``
.. danger::

View File

@ -75,19 +75,30 @@ Configure the :ref:`access rules<rules>`.
Configure the :ref:`headers<headers>`:
- remote_user: $uid
- remote_groups: encode_base64($groups,'')
- remote_user: ``$uid``
- remote_groups: ``join('|', keys(%{$hGroups}))``
- secret: ``choose_a_secret_key``
Xwiki Configuration
~~~~~~~~~~~~~~~~~~~
First, you need to install the `Headers Trusted Authentication Adapter <https://extensions.xwiki.org/xwiki/bin/view/Extension/Trusted%20Headers%20Authentication%20Adapter>`__
Then, configure in `xwiki.cfg`
::
xwiki.authentication.authclass=org.xwiki.contrib.authentication.XWikiTrustedAuthenticator
xwiki.authentication.trusted.adapterHint=headers
xwiki.authentication.trusted.auth_field=remote_user
xwiki.authentication.trusted.group_field=remote_groups
xwiki.authentication.trusted.logout_url=https://auth.acme.fr/#logout
xwiki.authentication.trusted.logout_url=https://auth.example.com/?logout=1
xwiki.authentication.trusted.secret_field=secret
xwiki.authentication.trusted.secret_value=choose_a_secret_key
# Adjust the XWiki=>LemonLDAP group map to your liking
xwiki.authentication.trusted.groupsMapping=XWiki.XWikiAdminGroup=xwiki-admins|XWiki.XWikiAdminGroup=timelords
.. |image0| image:: /applications/xwiki.png
:class: align-center

View File

@ -64,12 +64,10 @@ to access required locations in Portal Virtual Host.
**Choice used for password authentication** => 2_LDAP (by example)
.. attention::
With HTTPS, you may have to set **LWP::UserAgent
object** with ``verify_hostname => 0`` and ``SSL_verify_mode => 0``.
With HTTPS, you may have to set **LWP::UserAgent object**
with ``verify_hostname => 0`` and ``SSL_verify_mode => 0``.
Go to:

View File

@ -63,23 +63,48 @@ Then, go in ``CAS parameters``:
- **Authentication level**: authentication level for this module.
Then create the list of CAS servers in the manager. For each, set:
Then create the list of CAS servers in the manager.
Options
~~~~~~~
- **Server URL** *(required)*: CAS server URL (must use https://)
- **Renew authentication** *(default: disabled)*: force authentication
renewal on CAS server
- **Gateways authentication** *(default: disabled)*: force transparent
authentication on CAS server
Proxied services
~~~~~~~~~~~~~~~~
In this section, set the list of services for which a proxy ticket is
requested:
- **Key**: Service ID
- **Value** Service URL (CAS service identifier)
Display
~~~~~~~
- **Display Name**: Name to display. Required if you have more than 1
CAS server declared
- **Icon**: Path to CAS Server icon. Used only if you have more than 1
CAS server declared
- **Order**: Number to sort CAS Servers display
- **Proxied services**: list of services for which a proxy ticket is
requested:
- **Resolution Rule**: rule that will be applied to preselect a CAS server for
a user. You have access to all environment variable *(like user IP address)*
and all session keys.
- **Key**: Service ID
- **Value** Service URL (CAS service identifier)
For example, to preselect this server for users coming from 129.168.0.0/16
network
::
$ENV{REMOTE_ADDR} =~ /^192\.168/
To preselect this server when the ``MY_SRV`` :doc:`choice <authchoice>` is selected ::
$_choice eq "MY_SRV"
- **Order**: Number to sort CAS Servers display
.. tip::

View File

@ -51,7 +51,7 @@ Then, go in ``Choice Parameters``:
``lmAuth``)
- **Allowed modules**: click on ``New chain`` to add a choice.
- **Choice used for password authentication**: authentication module used by
:doc:`AuthBasic handler<handlerauthbasic>` and :ref:`OAuth2.0 Password Grant <resource-owner-password-grant>`
:doc:`AuthBasic handler<authbasichandler>` and :ref:`OAuth2.0 Password Grant <resource-owner-password-grant>`
- **FindUser plugin parameter**: authentication module called by
Find user plugin (:doc:`Find user plugin<finduser>`)

View File

@ -39,7 +39,7 @@ must set:
- overloaded parameters: you can redefine any LLNG string parameters.
For example, if you use 2 different LDAP, the first can use normal
configuration and for the second, overwritten parameter can redefine
ldapServer,...
ldapServer or any existing parameter.
.. note::
@ -63,12 +63,13 @@ parameters.
For example, if DBI is configured to use PostgreSQL but DB2 is a MySQL
DB, you can override the "dbiChain" parameter.
You can also override a complex key like ldapExportedVars, by setting a
JSON value:
The over parameter is a HASH ref where keys are attributes names and values are the overriden value.
To override a complex key like ldapExportedVars, you must use a JSON value, as the over parameter
expect string values:
.. code-block:: javascript
{"cn" => "cn", "uid" => "sAMAccounName", "mail" => "mail"}
{"cn": "cn", "uid": "sAMAccounName", "mail": "mail"}
.. attention::

View File

@ -38,12 +38,8 @@ LL::NG can use two tables:
Authentication table and user table can be the same.
The password can be in plain text, or encoded with a standard SQL
method:
- SHA
- SHA1
- MD5
The password can be in plain text, or encoded with a SQL method (for example
``SHA``, ``SHA1``, ``MD5`` or any method valid on database side).
Example 1: two tables
^^^^^^^^^^^^^^^^^^^^^
@ -159,7 +155,8 @@ Password
~~~~~~~~
- **Hash schema**: SQL method for hashing password. Can be left blank
for plain text passwords.
for plain text passwords. The method will be forced to uppercase in
SQL statement.
- **Dynamic hash activation**: Activate dynamic hashing. With dynamic
hashing, the hash scheme is recovered from the user password in the
database during authentication.

View File

@ -78,5 +78,4 @@ variables:
.. tip::
You can use the same Facebook access token in your
applications. It is stored in session datas under the name
``$_facebookToken``\
applications. It is stored in session data under the name ``$_facebookToken``\

View File

@ -11,14 +11,14 @@ Presentation
------------
`Kerberos <https://en.wikipedia.org/wiki/Kerberos_(protocol)>`__ is a
network authentication protocol used to authenticate users based on
network authentication protocol used for authenticating users based on
their desktop session.
LL::NG uses GSSAPI module to validate Kerberos ticket against a local
keytab.
LLNG Configuration
------------------
LL::NG Configuration
--------------------
In Manager, go in ``General Parameters`` > ``Authentication modules``
and choose Kerberos for authentication. Then go to "Kerberos parameters"
@ -34,13 +34,15 @@ and configure the following parameters:
Kerberos code to validate Kerberos ticket
- **Remove domain in username**: set to "enabled" to strip username
value and remove the '@domain'.
- **Allowed domains**: if set, tickets will only be accepted if they come from one of the domains listed here. This is a space-separated list. This feature can be useful when using :doc:`combination<authcombination>` and cross-realm Kerberos trusts.
- **Allowed domains**: if set, tickets will only be accepted if they come
from one of the domains listed here. This is a space-separated list.
This feature can be useful when using :doc:`combination<authcombination>`
and cross-realm Kerberos trusts.
.. attention::
- Due to a perl GSSAPI issue, you may need to copy the keytab in
/etc/krb5.keytab which is the default location hardcoded in the
library

View File

@ -74,12 +74,12 @@ Connection
- More than one server can be set here separated by spaces or
commas. They will be tested in the specified order.
- To use TLS, set ``ldap+tls://server`` and to use LDAPS, set
- To use StartTLS, set ``ldap+tls://server`` and to use LDAPS, set
``ldaps://server`` instead of server name.
- If you use TLS, you can set any of the
- If you use StartTLS or LDAPS, you can set any of the
`Net::LDAP <http://search.cpan.org/~gbarr/perl-ldap/lib/Net/LDAP.pod>`__
start_tls() sub like
``ldap+tls://server/verify=none&capath=/etc/ssl``. You can
start_tls() options in the URL, such as ``ldap+tls://server/verify=none``
or ``ldaps://server/cafile=/etc/ssl/ca.pem&sslversion=tlsv1_2``. You can
also use cafile and capath parameters.
- **Server port**: TCP port used by LDAP server if different from the standard
@ -109,7 +109,7 @@ Connection
.. attention::
LemonLDAP::NG need anonymous access to LDAP Directory
LL::NG needs anonymous access to LDAP Directory
RootDSE in order to check LDAP connection.
Filters
@ -155,6 +155,7 @@ Groups
- **Search base**: DN of groups branch. If no value, disable group
searching.
- **Object class**: objectClass of the groups (default: groupOfNames).
If you are using Active Directory you need to modify this value to ``group``.
- **Target attribute**: name of the attribute in the groups storing the
link to the user (default: member).
- **User source attribute**: name of the attribute in users entries
@ -208,7 +209,7 @@ Password
- **Allow a user to reset his expired password**: if activated, the
user will be prompted to change password if his password is expired
(default: disabled)
- **Search for user before password change**: this option forces the password
- **Search for user before password change**: this option forces the password
change module to search for the user again, refreshing its DN. This feature
is only useful in rare cases when you use LDAP as the password module, but
not as the UserDB module. (default: enabled)

View File

@ -27,7 +27,7 @@ least version 1.0.
LL::NG can also act as :doc:`OpenID server<idpopenid>`, that
allows one to interconnect two LL::NG systems.
LL::NG will then display a form with an OpenID input, wher users will
LL::NG will then display a form with an OpenID input, where users will
type their OpenID login.
@ -81,12 +81,12 @@ See also :doc:`exported variables configuration<exportedvars>`.
.. attention::
Browser implementations of formAction directive are
inconsistent (e.g. Firefox doesn't block the redirects whereas Chrome
Browser implementations of formAction directive are inconsistent
(e.g. Firefox doesn't block the redirects whereas Chrome
does). Administrators may have to modify formAction value with wildcard
likes \*.
In Manager, go in :
In Manager, go in:
``General Parameters`` > ``Advanced Parameters`` > ``Security`` >
``Content Security Policy`` > ``Form destination``

View File

@ -20,15 +20,15 @@ LL::NG can act as an OpenID Connect Relying Party (RP) towards multiple
OpenID Connect Providers (OP). It will get the user identity through an
ID Token, and grab user attributes through UserInfo endpoint.
As an RP, LL::NG supports a lot of OpenID Connect features:
As an RP, LL::NG supports many OpenID Connect features:
- Authorization Code flow
- Authorization Code, Implicit and Hybrid flows
- Automatic download of JWKS
- JWT signature verification
- Access Token Hash verification
- ID Token validation
- Get UserInfo as JSON or as JWT
- Logout on EndSession end point
- Logout on EndSession endpoint
You can use this authentication module to link your LL::NG server to any
OpenID Connect Provider. Here are some examples, with their specific
@ -60,11 +60,11 @@ Google France Connect Pro Santé Connect
.. attention::
OpenID Connect specification is not finished for logout
propagation. So logout initiated by relaying-party will be forward to
OpenID Connect specification is not achieved for logout propagation.
So logout initiated by relaying-party will be forwarded to
OpenID Connect provider but logout initiated by the provider (or another
RP) will not be propagated. LLNG will implement this when spec will be
published.
RP) will not be propagated. LL::NG will implement this when specification
is published.
Configuration
-------------
@ -93,11 +93,11 @@ In ``General Parameters`` > ``Authentication modules``, set:
.. attention::
Browser implementations of formAction directive are
inconsistent (e.g. Firefox doesn't block the redirects whereas Chrome
inconsistent (e.g. Firefox does not block the redirects whereas Chrome
does). Administrators may have to modify formAction value with wildcard
likes \*.
In Manager, go in :
In Manager, go in:
``General Parameters`` > ``Advanced Parameters`` > ``Security`` >
``Content Security Policy`` > ``Form destination``
@ -105,11 +105,10 @@ In ``General Parameters`` > ``Authentication modules``, set:
Then in ``General Parameters`` > ``Authentication modules`` >
``OpenID Connect parameters``, you can set:
- **Authentication level**: level of authentication to associate to
this module
- **Callback GET parameter**: name of GET parameter used to intercept
- **Authentication level**: Authentication level associated to this module
- **Callback GET parameter**: Name of the GET parameter used for intercepting
callback (default: openidconnectcallback)
- **State session timeout**: duration of a state session (used to keep
- **State session timeout**: Duration of a state session (used for keeping
state information between authentication request and authentication
response) in seconds (default: 600)
@ -119,7 +118,8 @@ Register LL::NG to an OpenID Connect Provider
To register LL::NG, you will need to give some information like
application name or logo.
You will be asked to provide a *Redirect URI* for LemonLDAP::NG, which is constructed by appending the ``openidconnectcallback=1`` parameter to the Portal URL.
You will be prompted to provide a *Redirect URI* for LL::NG, which is built
by appending the ``openidconnectcallback=1`` parameter to the Portal URL.
For example:
@ -132,15 +132,15 @@ For example:
you need to set SameSite cookie value to "Lax" or "None".
See :doc:`SSO cookie parameters<ssocookie>`
After registration, the OP must give you a client ID and a client
secret, that will be used to configure the OP in LL::NG.
After registration, the OP must give you a *Client ID* and a *Client
secret* required to configure the OP in LL::NG.
Declare the OpenID Connect Provider in LL::NG
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In the Manager, select node ``OpenID Connect Providers`` and click on
``Add OpenID Connect Provider``. Give a technical name (no spaces, no
special characters), like "sample-op";
In Manager, select node ``OpenID Connect Providers`` and click on
``Add OpenID Connect Provider``. Set a technical name (without space or
special character) like "sample-op".
You can then access to the configuration of this OP.
@ -183,26 +183,24 @@ JWKS data
^^^^^^^^^
JWKS is a JSON file containing public keys. LL::NG can grab them
automatically if jwks_uri is defined in metadata. Else you can paste the
content of the JSON file in the textarea.
automatically if jwks_uri is defined in metadata. Else you can paste
the JSON file content in the textarea.
.. tip::
If the OpenID Connect provider only uses symmetric encryption,
JWKS data is not useful.
JWKS data are useless.
Exported attributes
^^^^^^^^^^^^^^^^^^^
Define here the mapping between the LL::NG session content and the
fields provided in UserInfo response. The fields are defined in `OpenID
Connect
standard <http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims>`__,
and depends on the scope requested by LL::NG (see options in next
chapter).
Define here mapping between LL::NG session content and fields
provided in UserInfo endpoint response. These fields are defined in
`OpenID Connect standard <http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims>`__,
and depends on the scope requested by LL::NG (see options below).
So you can define for example:
So you can define by example:
- cn => name
- sn => family_name
@ -212,39 +210,65 @@ So you can define for example:
Options
^^^^^^^
- **Configuration**:
Configuration
"""""""""""""
- **Configuration endpoint**: URL of OP configuration endpoint
- **JWKS data timeout**: After this time, LL::NG will do a request
to get a fresh version of JWKS data. Set to 0 to disable it.
- **Client ID**: Client ID given by OP
- **Client secret**: Client secret given by OP
- **Store ID token**: Allows one to store the ID token (JWT) inside
user session. Do not enable it unless you need to replay this token
on an application, or if you need the id_token_hint parameter when
using logout.
- **Configuration endpoint**: URL of OP configuration endpoint
- **JWKS data timeout**: After this time, LL::NG will do a request
to get a fresh version of JWKS data. Set to 0 to disable it.
- **Client ID**: Client ID given by OP
- **Client secret**: Client secret given by OP
- **Store ID token**: Allows one to store the ID Token (JWT) inside
user session. Do not enable it unless you need to replay this token
on an application, or if you need the id_token_hint parameter when
using logout.
- **Protocol**:
Protocol
""""""""
- **Scope**: Value of scope parameter (example: openid profile). The
``openid`` scope is mandatory.
- **Display**: Value of display parameter (example: page)
- **Prompt**: Value of prompt parameter (example: consent)
- **Max age**: Value of max_age parameter (example: 3600)
- **UI locales**: Value of ui_locales parameter (example: en-GB en
fr-FR fr)
- **ACR values**: Value acr_values parameters (example: loa-1)
- **Token endpoint authentication method**: Choice between
``client_secret_post`` and ``client_secret_basic``
- **Check JWT signature**: Set to 0 to disable JWT signature
checking
- **ID Token max age**: If defined, LL::NG will check the ID Token
date and reject it if too old
- **Use Nonce**: If enabled, a nonce will be sent, and verified from
the ID Token
- **Scope**: Value of scope parameter (example: openid profile). The
``openid`` scope is mandatory.
- **Display**: Value of display parameter (example: page)
- **Prompt**: Value of prompt parameter (example: consent)
- **Max age**: Value of max_age parameter (example: 3600)
- **UI locales**: Value of ui_locales parameter (example: en-GB en
fr-FR fr)
- **ACR values**: Value acr_values parameters (example: loa-1)
- **Token endpoint authentication method**: Choice between
``client_secret_post`` and ``client_secret_basic``
- **Check JWT signature**: Set to 0 to disable JWT signature
checking
- **ID Token max age**: If defined, LL::NG will check the date of ID
token and refuse it if it is too old
- **Use Nonce**: If enabled, a nonce will be sent, and verified from
the ID Token
Display
"""""""
- **Display**:
- **Display name**: Name of the application
- **Logo**: Logo of the application
- **Resolution Rule**: rule that will be applied to preselect an OP
for a user. You have access to all environment variable *(like user
IP address)* and all session keys.
- **Display name**: Name of the application
- **Logo**: Logo of the application
- **Order**: Number to sort buttons
For example, to preselect this OP for users coming from 129.168.0.0/16
network
::
$ENV{REMOTE_ADDR} =~ /^192\.168/
To preselect this OP when the ``MY_OP`` :doc:`choice <authchoice>` is selected ::
$_choice eq "MY_OP"
- **Order**: Number to sort buttons
.. attention::
With HTTPS authorization endpoint, you may have to set **LWP::UserAgent object**
with ``verify_hostname => 0`` and ``SSL_verify_mode => 0``.
Go to: ``General Parameters > Advanced Parameters > Security > SSL options for server requests``

View File

@ -15,7 +15,7 @@ credentials to another LL::NG portal, like a proxy.
The difference with :doc:`remote authentication<authremote>` is that the
client will never be redirect to the main LL::NG portal. This
configuration is usable if you want to expose your internal SSO portal
configuration is useful if you want to expose your internal SSO portal
to another network (DMZ).
Configuration
@ -40,20 +40,22 @@ Then, go in ``Proxy parameters``:
same as previous for SOAP, same with "/session/my" for REST)
- **Choice parameter** (optional): choice parameter of the internal portal if applicable
- **Choice value** (optional): value of the choice parameter of the internal portal
- **Cookie name** (optional): internal portal cookie name, if
different from external portal
- **Cookie name** (optional): internal portal cookie name,
if different from external portal
- **Impersonation** (optional) : can be enabled if the internal portal provides impersonation
.. note::
If the internal portal uses :doc:`Choice Authentication<authchoice>`, you must specify 'Internal portal choice parameter' and 'Internal portal choice value' depending on its configuration.
This feature needs at least LL::NG version 2.0.14
If the internal portal uses :doc:`Choice Authentication<authchoice>`,
you have to specify 'Internal portal choice parameter' and
'Internal portal choice value' depending on its configuration.
This feature needs at least LL::NG version 2.0.14.
Internal portal
~~~~~~~~~~~~~~~
The portal must be configured to accept REST or SOAP authentication
requests if you chose to use SOAP. See:
requests. See:
:doc:`REST server plugin<restservices>` or
:doc:`SOAP session backend<soapsessionbackend>` *(deprecated)*.

View File

@ -37,8 +37,8 @@ In Debian/Ubuntu, install the library through apt-get command
apt-get install libauthen-radius-perl
Configuration of LemonLDAP::NG
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Configuration of LL::NG
~~~~~~~~~~~~~~~~~~~~~~~
In Manager, go in ``General Parameters`` > ``Authentication modules``
and choose Radius for authentication.

View File

@ -111,20 +111,6 @@ For each attribute, you can set:
Options
^^^^^^^
General options
'''''''''''''''
- **Resolution Rule**: rule that will be applied to preselect an IDP
for a user. You have access to all environment variable *(like user
IP address)* and all session keys.
For example, to preselect this IDP for users coming from 129.168.0.0/16
network and member of "admin" group:
::
$ENV{REMOTE_ADDR} =~ /^192\.168/ and $groups =~ /\badmin\b/
Authentication request
''''''''''''''''''''''
@ -135,10 +121,6 @@ Authentication request
request
- **Passive authentication**: set IsPassive flag in authentication
request
- **Allow proxied authentication**: allow an authentication response to
be issued from another IDP that the one we register (proxy IDP). If
you disallow this, you should also disallow direct login form IDP,
because proxy restriction is set in authentication requests.
- **Allow login from IDP**: allow a user to connect directly from an
IDP link. In this case, authentication is not a response to an issued
authentication request, and we have less control on conditions.
@ -212,8 +194,6 @@ Used only if at least 2 SAML Identity Providers are declared
- **Display name**: Name of the IDP
- **Logo**: Logo of the IDP
- **Order**: Number used for sorting IDP display
.. tip::
@ -222,6 +202,23 @@ Used only if at least 2 SAML Identity Providers are declared
icon file name directly in the field and copy the logo file in portal
icons directory
- **Resolution Rule**: rule that will be applied to preselect an IDP
for a user. You have access to all environment variable *(like user
IP address)* and all session keys.
For example, to preselect this IDP for users coming from 129.168.0.0/16
network
::
$ENV{REMOTE_ADDR} =~ /^192\.168/
To preselect this IDP when the ``MY_IDP`` :doc:`choice <authchoice>` is selected ::
$_choice eq "MY_IDP"
- **Order**: Number used for sorting IDP display
.. |image0| image:: /documentation/manager-saml-metadata.png
:class: align-center
.. |image1| image:: /documentation/manager-saml-attributes.png

View File

@ -181,7 +181,6 @@ Nginx SSL Virtual Host example with uWSGI
#index index.psgi;
location / {
try_files $uri $uri/ =404;
add_header Strict-Transport-Security "max-age=15768000";
}
}

View File

@ -5,4 +5,4 @@ Yubikey
.. attention::
This module has been replaced by
:doc:`Yubikey Second Factor<yubikey2f>`\
:doc:`Yubico OTP Second Factor<yubikey2f>`\

View File

@ -20,7 +20,7 @@ Required parameters
Name Comment Example
**ldapServer** URI of the server ldap://localhost
**ldapConfBase** DN of sessions branch ou=sessions,dc=example,dc=com
**ldapBindDN** Connection login cn=admin,dc=example,dc=password
**ldapBindDN** Connection login cn=admin,dc=example,dc=com
**ldapBindPassword** Connection password secret
**ldapRaw** Binary attributes (?i:^jpegPhoto|;binary)
**Index** Fields to index refer to :ref:`fieldstoindex`

View File

@ -59,7 +59,7 @@ Create the following tables. You may skip the session types you are not going to
_session_kind varchar(15),
_utime bigint,
ProxyID varchar(64),
_nameID varchar(128),
_nameID varchar(255),
_assert_id varchar(64),
_art_id varchar(64),
_saml_id varchar(64)
@ -89,7 +89,7 @@ Create the following tables. You may skip the session types you are not going to
_utime bigint,
_cas_id varchar(128),
pgtIou varchar(128)
) DEFAULT CHARSET utf8
) DEFAULT CHARSET utf8;
CREATE INDEX i_c__session_kind ON cassessions (_session_kind);
CREATE INDEX i_c__utime ON cassessions (_utime);
CREATE INDEX i_c__cas_id ON cassessions (_cas_id);
@ -98,7 +98,7 @@ Create the following tables. You may skip the session types you are not going to
LemonLDAP::NG configuration
---------------------------
Go in the Manager and set the session module to ``Apache::Session::Browseable::PgJSON`` for each session type you intend to use:
Go in the Manager and set the session module to ``Apache::Session::Browseable::MySQL`` for each session type you intend to use:
* ``General parameters`` » ``Sessions`` » ``Session storage`` » ``Apache::Session module``
* ``General parameters`` » ``Sessions`` » ``Persistent sessions`` » ``Apache::Session module``

View File

@ -31,3 +31,18 @@ Go in ``General parameters`` > ``Portal`` > ``Captcha``:
- **Activation in register form**: set to 1 to display captcha in
register form
- **Size**: length of captcha
- **Captcha module**: allows you to use a custom Captcha module, see
:ref:`below <customcaptcha>`. Leave it blank to use the default Captcha
implementation
- **Captcha module options**: options for the custom Captcha module
.. _customcaptcha:
Custom Captcha modules
----------------------
.. versionadded:: 2.0.15
If the default Captcha does not meet your requirements, you can replace it with
a different implementation. See the ``Lemonldap::NG::Portal::Captcha`` manual
page for details on how to implement a Captcha module.

View File

@ -33,9 +33,9 @@ The plugin will respond to the HTTP request with:
* HTTP code 500 if something went wrong
* HTTP code 200 and the following JSON content if something went right
```
{"result":1,"version":"2.0.14"}
```
.. code:: json
{"result":1,"version":"2.0.14"}
.. versionadded:: 2.0.14
The *version* key is returned

View File

@ -64,7 +64,7 @@ can be executed to set all the session backends.
In this example we have:
- Backend: PostGreSQL
- Backend: PgJSON
- DB user: lemonldaplogin
- DB password: lemonldappw
- Database: lemonldapdb
@ -81,7 +81,7 @@ In this example we have:
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 \
set \
globalStorage Apache::Session::Browseable::Postgres
globalStorage Apache::Session::Browseable::PgJSON
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 \
addKey \
@ -89,7 +89,6 @@ In this example we have:
globalStorageOptions UserName 'lemonldaplogin' \
globalStorageOptions Password 'lemonldappw' \
globalStorageOptions Commit 1 \
globalStorageOptions Index 'ipAddr _whatToTrace user' \
globalStorageOptions TableName 'sessions'
- Persistent sessions:
@ -103,7 +102,7 @@ In this example we have:
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 \
set \
persistentStorage Apache::Session::Browseable::Postgres
persistentStorage Apache::Session::Browseable::PgJSON
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 \
addKey \
@ -111,7 +110,6 @@ In this example we have:
persistentStorageOptions UserName 'lemonldaplogin' \
persistentStorageOptions Password 'lemonldappw' \
persistentStorageOptions Commit 1 \
persistentStorageOptions Index '_session_uid' \
persistentStorageOptions TableName 'psessions'
- CAS sessions
@ -120,7 +118,7 @@ In this example we have:
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 \
set \
casStorage Apache::Session::Browseable::Postgres
casStorage Apache::Session::Browseable::PgJSON
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 \
addKey \
@ -128,7 +126,6 @@ In this example we have:
casStorageOptions UserName 'lemonldaplogin' \
casStorageOptions Password 'lemonldappw' \
casStorageOptions Commit 1 \
casStorageOptions Index '_cas_id' \
casStorageOptions TableName 'cassessions'
- SAML sessions
@ -137,7 +134,7 @@ In this example we have:
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 \
set \
samlStorage Apache::Session::Browseable::Postgres
samlStorage Apache::Session::Browseable::PgJSON
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 \
addKey \
@ -145,7 +142,6 @@ In this example we have:
samlStorageOptions UserName 'lemonldaplogin' \
samlStorageOptions Password 'lemonldappw' \
samlStorageOptions Commit 1 \
samlStorageOptions Index '_saml_id ProxyID _nameID _assert_id _art_id _session_id' \
samlStorageOptions TableName 'samlsessions'
- OpenID Connect sessions
@ -154,7 +150,7 @@ In this example we have:
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 \
set \
oidcStorage Apache::Session::Browseable::Postgres
oidcStorage Apache::Session::Browseable::PgJSON
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 \
addKey \
@ -195,13 +191,13 @@ In this example we have:
Configure form replay
---------------------
To add form replay on a host, you need to set the catched URI and
To add form replay on a host, you need to set the caught URI and
the variables to post.
In this example we have:
- Host: test.example.com
- Catched URI: /login.php
- Caught URI: /login.php
- jQuery URL: default
- Variables:
@ -301,7 +297,7 @@ In this example we have:
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 \
addKey \
casAppMetaDataExportedVars/testapp mail mail \
casAppMetaDataExportedVars/testapp cn cn
casAppMetaDataExportedVars/testapp cn cn \
casAppMetaDataOptions/testapp casAppMetaDataOptionsService 'https://testapp.example.com/'
Configure SAML Identity Provider
@ -494,6 +490,78 @@ To update the master encryption key:
key 'xxxxxxxxxxxxxxx'
Bulk configuration changes
--------------------------
.. versionadded:: 2.0.15
The ``merge`` subcommand can be used to inject multiple configuration keys and
variables at once. It reads a list of JSON or YAML formatted files and combines
them with the current config. This allows you to script common configuration
changes in the form of snippets.
Example (JSON):
.. code:: json
{
"https": 1,
"securedCookie": 1,
"sameSite": "None",
"macros": {
"UA": null,
"_whatToTrace": "uid"
}
}
Example (YAML) :
.. code:: yaml
# YAML files can be commented
https: 1
securedCookie: 1
sameSite: "None"
# override some default macros
macros:
# Remove UA
UA: ~
# Update _whatToTrace
_whatToTrace: uid
Importing the changes:
.. code:: shell
# Import a JSON snippet
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 merge example.json
# Import a YAML snippet
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 merge example.yaml
# Import several snippets
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 merge my_config/*.yaml
.. note:: You may need to install the `YAML <https://metacpan.org/pod/YAML>`__
Perl module to be able to import
YAML configuration snippets
.. warning::
* The config files will be read as the webserver (``apache``/``www-data``)
user. Make sure they have the correct permissions before running the
command
* Do not use booleans in JSON/YAML files, LemonLDAP only understands 0/1
values for boolean configuration keys
* Due to limitations in the Perl YAML parser, you need to set a key to ``~``
instead of ``null`` to remove it
.. _cli-sessions:
Sessions Management
@ -536,7 +604,7 @@ List second factors of a user ::
lemonldap-ng-sessions secondfactors get dwho
Deregister Yubikey of a user ::
Deregister Yubico OTP for a user ::
lemonldap-ng-sessions secondfactors delType dwho UBK
@ -546,7 +614,7 @@ OIDC Consents management
.. versionadded:: 2.0.9
List consents of a user ::
lemonldap-ng-sessions consents get dwho
Revoke consents on OIDC provider 'test' for a user::

View File

@ -50,7 +50,7 @@ master_doc = 'start'
# General information about the project.
project = u'LemonLDAP::NG'
copyright = u'2021, LemonLDAP::NG'
copyright = u'2022, LemonLDAP::NG'
author = u'LemonLDAP::NG'
# The version info for the project you're documenting, acts as replacement for
@ -138,6 +138,8 @@ if 'LLNGSPHINXWEBSITE' in os.environ:
import sphinx_rtd_theme
html_theme = 'sphinx_rtd_theme'
html_theme_options = {}
else:
html_copy_source = False
# html_theme_options = {}

View File

@ -128,6 +128,21 @@ configuration.
instanceName = LLNG_Demo
.. tip::
It is possible to use environment variable placeholders anywhere in
configuration. Those placeholders will be replaced by each LLNG component
using environment variables set locally.
The format is: ``%SERVERENV:VariableName%``.
To enable this feature, you must edit ``lemonldap-ng.ini`` to set
``useServerEnv`` value in [configuration] section:
.. code:: ini
[configuration]
useServerEnv = 1
Manager API
-----------

View File

@ -38,7 +38,7 @@ Example of a protected virtual host for a local application:
</VirtualHost>
Reverse proxy
Reverse-Proxy
~~~~~~~~~~~~~
Example of a protected virtual host with LemonLDAP::NG as reverse proxy:
@ -139,7 +139,7 @@ Then you can take any virtual host and modify it:
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/llng-fastcgi-server/llng-fastcgi.sock;
# Drop post datas
# Drop post data
fastcgi_pass_request_body off;
fastcgi_param CONTENT_LENGTH "";
@ -215,7 +215,7 @@ Example of a protected virtual host for a local application:
internal;
include /etc/nginx/fastcgi_params;
fastcgi_pass /path/to/llng-fastcgi-server.sock;
# Drop post datas
# Drop post data
fastcgi_pass_request_body off;
fastcgi_param CONTENT_LENGTH "";
# Keep original hostname
@ -258,7 +258,7 @@ Example of a protected virtual host for a local application:
.. _reverse-proxy-1:
Reverse proxy
Reverse-Proxy
~~~~~~~~~~~~~
- Example of a protected reverse-proxy:
@ -276,7 +276,7 @@ Reverse proxy
internal;
include /etc/nginx/fastcgi_params;
fastcgi_pass /path/to/llng-fastcgi-server.sock;
# Drop post datas
# Drop post data
fastcgi_pass_request_body off;
fastcgi_param CONTENT_LENGTH "";
# Keep original hostname
@ -452,7 +452,29 @@ A virtual host contains:
- Access rules: check user's right on URL patterns
- HTTP headers: forge information sent to protected applications
- POST data: use form replay
- Options: redirection port and protocol
- Options: redirection port, protocol, Handler type, aliases,required authentication level,...
Wildcards in hostnames
----------------------
A wildcard can be used in virtualhost name (not in
aliases !): ``*.example.com`` matches all hostnames that belong to
``example.com`` domain.
.. versionchanged:: 2.0.9
You can now use wildcards of the form ``test-*.example.com`` or
``test-%.example.com``. The ``%`` wilcard doesn't match subdomains.
Even if a wildcard exists, if a VirtualHost is explicitly declared, this
rule will be applied. Example with precedence order for test.sub.example.com:
#. test.sub.example.com
#. test%.sub.example.com
#. test*.sub.example.com
#. %.sub.example.com
#. \*.sub.example.com
#. \*.example.com (``%.example.com`` does not match
test.sub.example.com)
Access rules and HTTP headers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -464,7 +486,7 @@ application by LL::NG.
.. attention::
With **Nginx**-based ReverseProxy, header directives can
With **Nginx**-based Reverse-Proxy, header directives can
be appended by a LUA script.
To send more than **15** headers to protected applications,
@ -498,7 +520,7 @@ Options
Some options are available:
- **Port**: used to build redirection URL *(when user is not logged, or for
CDA requests)*
CDA requests)*, -1 means the handler builds the URL with the incoming port, as seen by the webserver
- **HTTPS**: used to build redirection URL
- **Maintenance mode**: reject all requests with a maintenance message
- **Aliases**: list of aliases for this virtual host *(avoid to rewrite
@ -507,18 +529,22 @@ Some options are available:
Provide a comma separated parameters list with custom function path and args.
Args can be vars or session attributes, macros, ...
By example: My::accessToTrace, Doctor, Who, _whatToTrace
- **Type**: handler type (normal,
:doc:`ServiceToken Handler<servertoserver>`,
:doc:`DevOps Handler<devopshandler>`,...)
- **Required authentication level**: this option avoids to reject user with
a rule based on ``$_authenticationLevel``. When user has not got the
required level, he is redirected to an upgrade page in the portal.
This default level is required for ALL locations relative to this virtual host.
It can be overrided for each locations.
- **Type**: handler type (:ref:`Main<presentation-kinematics>`,
:doc:`AuthBasic<authbasichandler>`,
:doc:`ServiceToken<servertoserver>`,
:doc:`DevOps<devopshandler>`,
:doc:`DevOpsST<devopssthandler>`,
:doc:`OAuth2<oauth2handler>`,...)
- **DevOps rules file URL**: option to define URL to retreive DevOps rules file.
This option can be overridden with ``uwsgi_param/fastcgi_param RULES_URL`` parameter.
- **ServiceToken timeout**: by default, ServiceToken is just valid during 30
seconds. This TTL can be customized for each virtual host.
- **Comment**: Can be used for setting comment.
.. attention::
@ -571,3 +597,6 @@ Some options are available:
"Port" and "HTTPS" options are used to build redirection URL *(when user
is not logged, or for CDA requests)*. By default, default values are
used. These options are only here to override default values.
.. |image0| image:: /documentation/new.png
:width: 35px

View File

@ -52,13 +52,13 @@ Install basic tools
Debian
^^^^^^
As *root :*
As *root:*
::
apt install aptitude
aptitude install vim make devscripts yui-compressor git git-gui libjs-uglify coffeescript cpanminus autopkgtest pkg-perl-autopkgtest
aptitude install libauth-yubikey-webclient-perl libnet-smtp-server-perl libtime-fake-perl libtest-output-perl libtest-pod-perl libtest-leaktrace-perl
aptitude install libauth-yubikey-webclient-perl libnet-smtp-server-perl libtime-fake-perl libtest-output-perl libtest-pod-perl libtest-leaktrace-perl libtest-mockobject-perl uglifyjs libdbd-sqlite3-perl libauthen-webauthn-perl libauthen-oath-perl
cpanm Authen::U2F Authen::U2F::Tester Crypt::U2F::Server::Simple
@ -71,7 +71,7 @@ As *root :*
Configure Git
^^^^^^^^^^^^^
As *user :*
As *user:*
::
@ -126,7 +126,7 @@ Install dependencies
::
aptitude install libapache-session-perl libcache-cache-perl libclone-perl libconfig-inifiles-perl libconvert-pem-perl libcrypt-openssl-bignum-perl libcrypt-openssl-rsa-perl libcrypt-openssl-x509-perl libcrypt-rijndael-perl libdbi-perl libdigest-hmac-perl libemail-sender-perl libgd-securityimage-perl libhtml-template-perl libio-string-perl libjson-perl libmime-tools-perl libmouse-perl libnet-ldap-perl libplack-perl libregexp-assemble-perl libregexp-common-perl libsoap-lite-perl libstring-random-perl libtext-unidecode-perl libunicode-string-perl liburi-perl libwww-perl libxml-simple-perl libxml-libxslt-perl libcrypt-urandom-perl libconvert-base32-perl cpanminus
aptitude install libapache-session-perl libcache-cache-perl libclone-perl libconfig-inifiles-perl libconvert-pem-perl libio-socket-timeout-perl libcrypt-openssl-bignum-perl libcrypt-openssl-rsa-perl libcrypt-openssl-x509-perl libcrypt-rijndael-perl libdbi-perl libdigest-hmac-perl libemail-sender-perl libgd-securityimage-perl libhtml-template-perl libio-string-perl libjson-perl libmime-tools-perl libmouse-perl libnet-ldap-perl libplack-perl libregexp-assemble-perl libregexp-common-perl libsoap-lite-perl libstring-random-perl libtext-unidecode-perl libunicode-string-perl liburi-perl libwww-perl libxml-simple-perl libxml-libxslt-perl libcrypt-urandom-perl libconvert-base32-perl cpanminus
aptitude install apache2 libapache2-mod-fcgid libapache2-mod-perl2 # install Apache
aptitude install nginx nginx-extras # install Nginx
cpanm perltidy@20181120

View File

@ -51,81 +51,28 @@ as you want, for example ``SSOExtensions.pm``:
Import custom functions in LemonLDAP::NG
----------------------------------------
Load relevant code in handler server
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LemonLDAP::NG Configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~
New method
^^^^^^^^^^
Just declare files or Perl module that must be loaded:
Edit ``lemonldap-ng.ini`` to load the Perl module(s)
::
[all]
require = /path/to/functions.pl, /path/to/SSOExtensions.pm
# OR
require = SSOExtensions::function1, SSOExtensions::function2
require = /path/to/SSOExtensions.pm
; Prevent Portal to crash if Perl module is not found
;requireDontDie = 1
Old method
^^^^^^^^^^
.. danger::
This method is available but unusable by Portal under
Apache. So if your rule may be used by the menu, use the new
method.
Apache
''''''
Your module has to be loaded by Apache (for example after Handler load):
.. code-block:: apache
# Perl environment
PerlRequire Lemonldap::NG::Handler
PerlRequire /path/to/SSOExtensions.pm
PerlOptions +GlobalRequest
FastCGI server (Nginx)
''''''''''''''''''''''
You've just to incicate to :doc:`LLNG FastCGI server<fastcgiserver>` the
file to read using either ``-f`` option or ``CUSTOM_FUNCTIONS_FILE``
environment variable. Using packages, you just have to modify your
``/etc/default/llng-fastcgi-server`` (or
``/etc/default/lemonldap-ng-fastcgi-server``) file:
.. code-block:: sh
# Number of process (default: 7)
#NPROC = 7
# Unix socket to listen to
SOCKET=/var/run/llng-fastcgi-server/llng-fastcgi.sock
# Pid file
PID=/var/run/llng-fastcgi-server/llng-fastcgi-server.pid
# User and GROUP
USER=www-data
GROUP=www-data
# Custom functions file
CUSTOM_FUNCTIONS_FILE=/path/to/SSOExtensions.pm
Declare custom functions
~~~~~~~~~~~~~~~~~~~~~~~~
Go in Manager, ``General Parameters`` » ``Advanced Parameters`` »
``Custom functions`` and set:
``Custom functions`` and declare your function names, separated by a space:
::
SSOExtensions::function1, SSOExtensions::function2
SSOExtensions::function1 SSOExtensions::function2
.. attention::
@ -133,13 +80,13 @@ Go in Manager, ``General Parameters`` » ``Advanced Parameters`` »
If your function is not compliant with
:doc:`Safe jail<safejail>`, you will need to disable the jail.
Use it
------
Usage
-----
You can now use your function in a macro, an header or an access rule,
for example:
::
SSOExtensions::function1( $uid, $ENV{REMOTE_ADDR} )
function1( $uid, $ENV{REMOTE_ADDR} )

View File

@ -16,19 +16,19 @@ DecryptValue plugin can be allowed or denied for specific users.
- **Use rule**: Select which users may use this plugin
- **Decrypt functions**: Set functions used for decrypting ciphered
values. Each function is tested until one succeeds. Let it blank
to use internal decrypt function.
to use internal ``decrypt`` extended function.
.. danger::
.. attention::
The ciphered value is the first parameter passed to custom functions.
The ``Encryption key`` is passed to custom funtions as second parameter
(see :ref:`Security settings<security-configure-security-settings>`).
Custom functions must be defined into
``Lemonldap::NG::Portal::My::Plugin`` and set:
``My::Plugin`` and set:
::
My::Plugin::function1 My::Plugin::function2
.. |image0| image:: /documentation/beta.png
:width: 100px

View File

@ -1,7 +1,7 @@
DevOps Handler
==============
This Handler is designed to retrieve vhost configuration from the website
This Handler is designed to retrieve VHost configuration from the website
itself, not from LL:NG configuration. Rules and headers are set in a
**rules.json** file stored at the website root directory (ie
``http://website/rules.json``). This file looks like:
@ -23,12 +23,14 @@ If this file is not found, the default rule "accept" is applied and just
No specific configuration is required except that:
- you have to choose this specific handler (directly by using
``VHOSTTYPE`` environment variable or in VHost options)
- you can set the loopback URL needed by the DevOps handler to get
``/rules.json`` or use ``RULES_URL`` parameter to set JSON file path
(see :doc:`SSO as a Service<ssoaas>`). Default to
``http://127.0.0.1:<server-port>``
- you have to select ``DevOps`` handler type either with
``VHOSTTYPE`` environment variable or in VHost options
- you can set in VHost options the loopback URL requested by
the DevOps handler to retrieve ``/rules.json`` or use
``RULES_URL`` environment variable to set JSON file location.
Default to ``http://127.0.0.1:<server-port>``
- HTTPS or redirection port can be set by using
``HTTP_REDIRECT`` or ``PORT_REDIRECT`` environment variables.
.. attention::

View File

@ -31,7 +31,7 @@ Installation and configuration
- `Version 2.0 </documentation/2.0/>`__ (stable)
- `Version 1.9 </documentation/1.9/>`__ (oldstable)
- Archived versions (unmaintained by LLNG Team )
- Archived versions (unmaintained by LL::NG Team )
- `Version 1.4 </documentation/1.4/>`__
- `Version 1.3 </documentation/1.3/>`__
@ -42,33 +42,30 @@ Installation and configuration
Packaged versions
~~~~~~~~~~~~~~~~~
These versions are maintained under distribution umbrella following
their policy.
These versions are maintained under distribution umbrella following their policy.
Debian
^^^^^^
.. tip::
Following Debian Policy, LLNG packages are never upgraded in published distributions. However, security patches are backported by maintenance teams *(except some inor ones)*.
Following Debian Policy, LL::NG packages are never upgraded in published distributions. However, security patches are backported by maintenance teams *(except some minor ones)*.
See `Security tracker <https://security-tracker.debian.org/tracker/source-package/lemonldap-ng>`__
=========== ========================== ======================================== ===================================================== ============================================================ =============================== =============================================================
Debian dist LLNG version Secured Maintenance LTS Limit `Extended LTS <https://wiki.debian.org/LTS/Extended>`__ Limit
=========== ========================== ======================================== ===================================================== ============================================================ =============================== =============================================================
*6* *Squeeze* *0.9.4.1* |maybe| No known vulnerability *None* *February 2016* *April 2019*
*7* *Wheezy* `1.1.2 </documentation/1.1/>`__ |maybe| No known vulnerability *None* *May 2018* *June 2020*
**8** Jessie `1.3.3 </documentation/1.3/>`__ |clean| CVE-2019-19791 tagged as minor **None** [1]_ June 2020 June 2022
**9** Stretch `1.9.7 </documentation/1.9/>`__ |clean| CVE-2019-19791 tagged as minor `Debian LTS Team <https://www.debian.org/lts/>`__ June 2022 Probably 2024
\ *Stretch-backports* `2.0.2 </documentation/2.0/>`__ |bad| CVE-2019-12046, CVE-2019-13031, CVE-2019-15941 *None* *June 2019*
\ *Stretch-backports-sloppy* `2.0.11 </documentation/2.0/>`__ |maybe| *None* *August 2021*
**10** Buster `2.0.2 </documentation/2.0/>`__ |clean| CVE-2019-19791 tagged as minor `Debian Security Team <https://security-team.debian.org/>`__ June 2024 Probably 2026
\ *Buster-backports* `2.0.11 </documentation/2.0/>`__ |clean| *None* *August 2021*
\ Buster-backports-sloppy `2.0.11 </documentation/2.0/>`__ |clean| LLNG Team, "best effort" [3]_ Until Debian 12 release [4]_
**11** Bullseye `2.0.11 </documentation/2.0/>`__ |clean| `Debian Security Team <https://security-team.debian.org/>`__ July 2026 Probably 2028
\ Bullseye-backports `2.0.11 </documentation/2.0/>`__ |clean| LLNG Team, "best effort" [3]_ Until Debian 12 release [4]_
**Next** Testing/Unstable Latest [5]_ |clean| LLNG Team
=========== ========================== ======================================== ===================================================== ============================================================ =============================== =============================================================
=========== ========================== ======================================== ===================================================== ============================================================ =================================== =============================================================
Debian dist LL::NG version Secured Maintenance LTS Limit `Extended LTS <https://wiki.debian.org/LTS/Extended>`__ Limit
=========== ========================== ======================================== ===================================================== ============================================================ =================================== =============================================================
*6* *Squeeze* *0.9.4.1* |maybe| No known vulnerability *None* *February 2016* *April 2019*
*7* *Wheezy* *1.1.2* |maybe| No known vulnerability *None* *May 2018* *June 2020*
*8* *Jessie* *1.3.3* |maybe| CVE-2019-19791 tagged as minor **None** [1]_ *June 2020* *Possibly 2024*
*9* *Stretch* *1.9.7* |maybe| CVE-2019-19791 tagged as minor `Debian LTS Team <https://www.debian.org/lts/>`__ *June 2022* *Possibly 2024*
**10** Buster `2.0.2 </documentation/2.0/>`__ |clean| CVE-2019-19791 tagged as minor `Debian Security Team <https://security-team.debian.org/>`__ June 2024 Possibly 2026
\ *Buster-backports* `2.0.14 </documentation/2.0/>`__ |maybe| *None* *September 2022*
\ *Buster-backports-sloppy* *Adds libauthen-webauthn-perl only* |maybe| *None* *September 2022*
**11** Bullseye `2.0.11 </documentation/2.0/>`__ |clean| `Debian Security Team <https://security-team.debian.org/>`__ July 2026 Possibly 2028
\ Bullseye-backports `2.0.14 </documentation/2.0/>`__ |clean| LL::NG Team, "best effort" [3]_ July 2024
**Next** Testing/Unstable Latest [5]_ |clean| LL::NG Team
=========== ========================== ======================================== ===================================================== ============================================================ =================================== =============================================================
See `Debian Security
Tracker <https://security-tracker.debian.org/tracker/source-package/lemonldap-ng>`__
@ -83,15 +80,16 @@ Ubuntu
Ubuntu version are included in "universe" branch [8]_, so not really security maintained. Prefer to use our repositories or Debian ones
=========== ============= ================================ ==================================================================== ===========
Ubuntu dist LLNG version Secured Maintenance
Ubuntu dist LL::NG version Secured Maintenance
=========== ============= ================================ ==================================================================== ===========
12.04 Precise `1.1.2 </documentation/1.1/>`__ |maybe| No known vulnerability None
14.04 Trusty `1.2.5 </documentation/1.2/>`__ |maybe| No known vulnerability None
16.04 Xenial [9]_ `1.4.6 </documentation/1.4/>`__ |bad| CVE-2019-12046, CVE-2019-13031 None
18.04 Bionic [9]_ `1.9.16 </documentation/1.9/>`__ |bad| CVE-2019-12046, CVE-2019-13031, CVE-2020-24660 None
20.04 Focal [9]_ `2.0.7 </documentation/2.0/>`__ |bad| CVE-2020-24660, CVE-2021-35472, CVE-2021-35473 None
20.10 Groovy `2.0.8 </documentation/2.0/>`__ |bad| CVE-2020-24660, CVE-2021-35472, CVE-2021-35473 None
21.04 Hirsute `2.0.11 </documentation/2.0/>`__ |bad| CVE-2021-35472, CVE-2021-35473 None
20.04 Focal [9]_ `2.0.7 </documentation/2.0/>`__ |bad| CVE-2020-24660, CVE-2021-35472, CVE-2021-35473, CVE-2021-40874 None
20.10 Groovy `2.0.8 </documentation/2.0/>`__ |bad| CVE-2020-24660, CVE-2021-35472, CVE-2021-35473, CVE-2021-40874 None
21.04 Hirsute `2.0.11 </documentation/2.0/>`__ |bad| CVE-2021-35472, CVE-2021-35473, CVE-2021-40874 None
22.04 Jammy `2.0.13 </documentation/2.0/>`__ |bad| CVE-2021-40874 None
=========== ============= ================================ ==================================================================== ===========
Bug report
@ -108,7 +106,7 @@ Development
- `Source
code <https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/tree/master>`__
- `Nightly trunk builds <http://lemonldap-ng.ow2.io/lemonldap-ng/>`__
*(for Debian or Ubuntu,*\ **really unstable**\ *)*
*(for Debian or Ubuntu, *\ **really unstable**\ *)*
- Git access:
::
@ -139,19 +137,16 @@ Other
Possible `Extended LTS <https://wiki.debian.org/LTS/Extended>`__
.. [3]
updated by `LLNG Team </team>`__ until dependencies are compatible.
updated by `LL::NG Team </team>`__ until dependencies are compatible.
Don't use backports unless you plan to update your system because
backports are not covered by Debian Security Policy
.. [4]
around July 2023
.. [5]
few days after release
.. [8]
Ubuntu universe/multiverse branches are community maintained *(so not
maintained by Canonical)*, but in fact nobody considers LLNG security
maintained by Canonical)*, but in fact nobody considers LL::NG security
issues. See `this
issue <https://bugs.launchpad.net/ubuntu/+source/lemonldap-ng/+bug/1829016>`__
for example

View File

@ -1,107 +0,0 @@
Download
========
Release notes
-------------
Release notes for latest version:
https://projects.ow2.org/view/lemonldap-ng/lemonldap-ng-2-0-9-is-out
Go on https://projects.ow2.org/bin/view/lemonldap-ng/ for older
versions.
See also :doc:`upgrade notes<upgrade>`.
Packages and archives
---------------------
Stable version (2.0.9)
~~~~~~~~~~~~~~~~~~~~~~
Tarball
^^^^^^^
- `Tarball <https://release.ow2.org/lemonldap/lemonldap-ng-2.0.9.tar.gz>`__
RPM
^^^
.. tip::
You can:
- Use :ref:`our own YUM repository<installrpm-yum-repository>`.
- Download them here and :ref:`install pre-required packages<prereq-yum>`.
RHEL/CentOS 7
'''''''''''''
- `RPM
bundle <https://release.ow2.org/lemonldap/lemonldap-ng-2.0.9_el7.rpm.tar.gz>`__
- `Source
RPM <https://release.ow2.org/lemonldap/lemonldap-ng-2.0.9-1.el7.src.rpm>`__
RHEL/CentOS 8
'''''''''''''
- `RPM
bundle <https://release.ow2.org/lemonldap/lemonldap-ng-2.0.9_el8.rpm.tar.gz>`__
- `Source
RPM <https://release.ow2.org/lemonldap/lemonldap-ng-2.0.9-1.el8.src.rpm>`__
Debian
^^^^^^
.. tip::
You can:
- Use
:ref:`packages provided by Debian<installdeb-official-repository>`.
- Use
:ref:`our own Debian repository<installdeb-llng-repository>`.
- Download them here and
:ref:`install pre-required packages<prereq-apt-get>`.
- `DEB
bundle <https://release.ow2.org/lemonldap/lemonldap-ng-2.0.9_deb.tar.gz>`__
Docker
^^^^^^
See https://hub.docker.com/r/coudot/lemonldap-ng/
::
docker pull coudot/lemonldap-ng
Nightly builds from master branch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Debian repository of master branch, rebuilt every night:
http://lemonldap-ng.ow2.io/lemonldap-ng/
Older versions
~~~~~~~~~~~~~~
You can find all versions on `OW2
releases <https://release.ow2.org/lemonldap/>`__.
Contributions
-------------
See https://github.com/LemonLDAPNG
.. _download-getting-sources-from-svn-repository:
Git repository
--------------
See https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng
::
git clone git@gitlab.ow2.org:lemonldap-ng/lemonldap-ng.git

View File

@ -4,8 +4,8 @@ Error messages
.. note::
This page do not reference all error messages, but only the
most common
This page does not reference all error messages,
but only the most common ones
Lemonldap::NG::Common
---------------------
@ -14,7 +14,7 @@ Lemonldap::NG::Common
Warning: key is not defined, set it in the manager !
→ LemonLDAP::NG uses a key to crypt/decrypt some datas. You have to set
→ LemonLDAP::NG uses a key to crypt/decrypt some data. You have to set
its value in Manager. This message is displayed only when you upgrade
from a version older than 1.0
@ -140,3 +140,10 @@ set ``*`` in trustedDomains to accept all).
XSS attack detected
→ Some URL parameters contain forbidden characters.
::
Detailled error codes list
→ Corresponding error codes can be found in
:doc:`Portal error codes<error_codes>`

View File

@ -0,0 +1,113 @@
Error codes list
================
.. note::
This page references all Portal error codes.
.. code-block:: perl
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

View File

@ -45,19 +45,26 @@ module.
Extend variables using macros and groups
----------------------------------------
Macros and groups are calculated during authentication process by the
portal:
Macros and groups are computed during authentication process by the
Portal:
- macros are used to extend (or rewrite)
:doc:`exported variables<exportedvars>`. A macro is stored as
attributes: it can contain boolean results or any string
- macros can also be used to import environment variables *(these
- macros can also be used for importing environment variables *(these
variables are in CGI format)*. Example: ``$ENV{HTTP_COOKIE}``
- groups are stored as a string with values separated by ''; ''
(default values separator) in the special attribute ``groups``: it
contains the names of groups whose rules were returned true for the
- groups are stored as a string with values separated by '; '
(default multivalues separator) in the special attribute ``groups``: it
contains names of groups whose rules were returned true for the
current user. For example:
.. danger::
Macros can be used for rewriting or overloading exported variables
but it can lead to some side effects. Be aware of alphabetical order
and keep in mind that exported variables are set. Then macros and
groups are computed.
.. code-block:: perl
$groups = group3; admin

View File

@ -18,12 +18,12 @@ This is also true for:
Inside this jail, you can access to:
* all session values and CGI environment variables (through `$ENV{<HTTP_NAME>}`)
* All session values and CGI environment variables (through `$ENV{<HTTP_NAME>}`)
* Core Perl subroutines (split, pop, map, etc.)
* :doc:`Custom functions<customfunctions>`
* The `encode_base64 <http://perldoc.perl.org/MIME/Base64.html>`__ subroutine
* Information about current request
* Extended functions:
* Extended functions except basic, iso2unicode and unicode2iso:
* basic_
* checkDate_
@ -36,9 +36,11 @@ Inside this jail, you can access to:
* inGroup_ (|new| in version 2.0.8)
* isInNet6_
* iso2unicode_
* iso2unicodeSafe_ (|new| in version 2.0.15)
* listMatch_ (|new| in version 2.0.7)
* token_
* unicode2iso_
* unicode2isoSafe_ (|new| in version 2.0.15)
* varIsInUri_ (|new| in version 2.0.7)
@ -53,48 +55,71 @@ Inside this jail, you can access to:
Extended Functions List
-----------------------
date
~~~~
basic
~~~~~
Returns the date, in format YYYYMMDDHHMMSS, local time by default, GMT
by calling ``date(1)``
.. attention::
::
This function is not compliant with the :doc:`Safe jail<safejail>`,
you will have to disable the jail to use it.
For example: date(1) lt '19551018080000'
dateToTime
~~~~~~~~~~
This function builds the ``Authorization`` HTTP header employed in
:doc:`HTTP Basic authentication scheme<applications/authbasic>`. It will
convert `user` and `password` parameters from UTF-8 to ISO-8859-1.
.. versionadded:: 2.0.12
Functions parameters:
Converts a string date into epoch time.
The date format is the LDAP date syntax, for example for the 1st March
2009 (GMT):
::
20090301000000Z
The date may end with a differential timezone that is interpreted to
adjust the epoch time, for example for the 1st March 2009 (+0100):
::
20090301000000+0100
- **user**
- **password**
Simple usage example:
::
dateToTime($ssoStartDate) lt dateToTime(date(1))
basic($uid,$_password)
checkDate
~~~~~~~~~
This function checks date of current request, and compare it to
a start date and an end date. It returns 1 if this matches, 0 else.
The date format corresponds to LDAP date syntax, for example for the 1st of March
2009 (GMT)
::
20090301000000Z
|new| Since version 2.0.12, the date may end with a differential timezone,
for example for the 1st of March 2009 (+0100):
::
20090301000000+0100
Functions parameters:
- **start**: Start date (GMT unless, |new| since version 2.0.12, a
differential timezone is included)
- **end**: End date (GMT unless, |new| since version 2.0.12, a
differential timezone is included)
- **default_access** (optional): Which result to return if **start** and
**end** dates are empty
Simple usage example:
::
checkDate($ssoStartDate, $ssoEndDate)
checkLogonHours
~~~~~~~~~~~~~~~
This function will check the day and the hour of current request, and
compare it to allowed days and hours. It returns 1 if this match, 0
This function checks the day and the hour of current request, and
compare it to allowed days and hours. It returns 1 if matches, 0
else. By default, the allowed days and hours is an hexadecimal
value, representing each hour of the week. A day has 24 hours, and a
week 7 days, so the value contains 168 bits, converted into 42
@ -112,12 +137,12 @@ For example, for a full access, excepted week-end:
You can use the binary value from the logonHours attribute of Active
Directory, or create a custom attribute in your LDAP schema.
Functions parameters:
Function parameters:
- **logon_hours**: string representing allowed logon hours (GMT)
- **logon_hours**: String representing allowed logon hours (GMT)
- **syntax** (optional): ``hexadecimal`` (default) or ``octetstring``
- **time_correction** (optional): hours to add or to subtract
- **default_access** (optional): what result to return if
- **time_correction** (optional): Hours to add or to subtract
- **default_access** (optional): Which result to return if
**logon_hours** is empty
Simple usage example:
@ -156,113 +181,58 @@ rejected. You can allow these users instead of reject them:
checkLogonHours($ssoLogonHours, '', '', '1')
date
~~~~
checkDate
~~~~~~~~~
This function will check the date of current request, and compare it to
a start date and an end date. It returns 1 if this match, 0 else.
The date format is the LDAP date syntax, for example for the 1st of March
2009 (GMT)
Returns the date, in format YYYYMMDDHHMMSS, local time by default, GMT
by calling ``date(1)``
::
20090301000000Z
For example: date(1) lt '19551018080000'
|new| Since version 2.0.12, the date may end with a differential timezone,
for example for the 1st of March 2009 (+0100):
dateToTime
~~~~~~~~~~
.. versionadded:: 2.0.12
Used for converting a string date into epoch time.
The date format is the LDAP date syntax, for example for the 1st March
2009 (GMT):
::
20090301000000Z
The date may end with a differential timezone that is interpreted to
adjust the epoch time, for example for the 1st March 2009 (+0100):
::
20090301000000+0100
Functions parameters:
- **start**: Start date (GMT unless, |new| since version 2.0.12, a
differential timezone is included)
- **end**: End date (GMT unless, |new| since version 2.0.12, a
differential timezone is included)
- **default_access** (optional): what result to return if **start** and
**end** are empty
Simple usage example:
::
checkDate($ssoStartDate, $ssoEndDate)
dateToTime($ssoStartDate) lt dateToTime(date(1))
encrypt
~~~~~~~
basic
~~~~~
.. tip::
.. attention::
Since version 2.0, this function is now compliant with
:doc:`Safe jail<safejail>`.
This function is not compliant with
:doc:`Safe jail<safejail>`, you will need to disable the jail to use
it.
This function builds the ``Authorization`` HTTP header used in
:doc:`HTTP Basic authentication scheme<applications/authbasic>`. It will
force conversion from UTF-8 to ISO-8859-1 of user and password data.
Functions parameters:
- **user**
- **password**
Simple usage example:
This function uses the secret key of LL::NG configuration to crypt a data.
This can be used for anonymizing identifier given to the protected
application.
::
basic($uid,$_password)
unicode2iso
~~~~~~~~~~~
.. attention::
This function is not compliant with
:doc:`Safe jail<safejail>`, you will need to disable the jail to use
it.
This function convert a string from UTF-8 to ISO-8859-1.
Functions parameters:
- **string**
Simple usage example:
::
unicode2iso($name)
iso2unicode
~~~~~~~~~~~
.. attention::
This function is not compliant with
:doc:`Safe jail<safejail>`, you will need to disable the jail to use
it.
This function convert a string from ISO-8859-1 to UTF-8.
Functions parameters:
- **string**
Simple usage example:
::
iso2unicode($name)
encrypt($_whatToTrace)
groupMatch
~~~~~~~~~~
@ -290,11 +260,12 @@ has2f
.. versionadded:: 2.0.10
This function tests if the current user has registered a second factor. The following types are supported:
This function tests if the current user has registered a second factor. The following types are supported out of the box:
* :doc:`TOTP<totp2f>`
* :doc:`U2F<u2f>`
* :doc:`UBK<yubikey2f>`
* :doc:`WebAuthn<webauthn2f>`
Example::
@ -316,6 +287,71 @@ Example::
$_2fDevices =~ /"type":\s*"TOTP"/s
inGroup
~~~~~~~
.. versionadded:: 2.0.8
This function lets you test if the user is in a given group. It is
case-insensitive.
Usage example:
::
inGroup('admins')
inGroup('test users')
The function returns 1 if the user belongs to the given group, and 0 if
they don't.
isInNet6
~~~~~~~~
Function to check if an IPv6 address is in a subnet. Example *check if
IP address is local*:
.. code-block:: perl
isInNet6($ipAddr, 'fe80::/10')
iso2unicode
~~~~~~~~~~~
.. attention::
This function is not compliant with :doc:`Safe jail<safejail>`.
You will have to disable the jail to use it.
This function converts a string from ISO-8859-1 to UTF-8.
Function parameter:
- **string**
Simple usage example:
::
iso2unicode($name)
iso2unicodeSafe
~~~~~~~~~~~~~~~
This function converts a string from ISO-8859-1 to UTF-8
but it is not as portable as the original one.
Functions parameters:
- **string**
Simple usage example:
::
iso2unicodeSafe($name)
.. _listMatch:
listMatch
@ -346,42 +382,6 @@ Simple usage example:
The function returns 1 if the value was found, and 0 if it was not
found.
inGroup
~~~~~~~
.. versionadded:: 2.0.8
This function lets you test if the user is in a given group. It is
case-insensitive.
Usage example:
::
inGroup('admins')
inGroup('test users')
The function returns 1 if the user belongs to the given group, and 0 if
they don't.
encrypt
~~~~~~~
.. tip::
Since version 2.0, this function is now compliant with
:doc:`Safe jail<safejail>`.
This function uses the secret key of LLNG configuration to crypt a data.
This can be used for anonymizing identifier given to the protected
application.
::
encrypt($_whatToTrace)
token
~~~~~
@ -392,16 +392,6 @@ This function generates token used for
token($_session_id,'webapp1.example.com','webapp2.example.com')
isInNet6
~~~~~~~~
Function to check if an IPv6 address is in a subnet. Example *check if
IP address is local*:
.. code-block:: perl
isInNet6($ipAddr, 'fe80::/10')
varIsInUri
~~~~~~~~~~
@ -433,3 +423,39 @@ Example *check if $uid is in /check-auth/ URI*:
:width: 35px
.. |image1| image:: /documentation/new.png
:width: 35px
unicode2iso
~~~~~~~~~~~
.. attention::
This function is not compliant with :doc:`Safe jail<safejail>`.
You will have to disable the jail to use it.
This function convert a string from UTF-8 to ISO-8859-1.
Function parameter:
- **string**
Simple usage example:
::
unicode2iso($name)
unicode2isoSafe
~~~~~~~~~~~~~~~
This function convert a string from UTF-8 to ISO-8859-1
but it is not as portable as the original one.
Function parameter:
- **string**
Simple usage example:
::
unicode2isoSafe($name)

View File

@ -30,6 +30,9 @@ All parameters are configured in "General Parameters » Portal Parameters
/ Verification to an external provider. You must also use *$code*
which is the value entered by user; Example:
``/usr/local/bin/verify --uid $uid --code $code``
- **Re-send interval**: Set this to a non-empty value to allow the user to
re-send the code in case a transmission error occured. The value sets how
many seconds the user has to wait before each attempt
- **Authentication level** (Optional): if you want to overwrite the
value sent by your authentication module, you can define here the new
authentication level. Example: 5

View File

@ -1,19 +1,19 @@
LemonLDAP::NG FastCGI server
============================
Since 1.9, Lemonldap::NG provides a FastCGI server usable to protect
Since 1.9, LL::NG provides a FastCGI server that can be used for protecting
applications with Nginx (See
:doc:`Manage virtual hosts<configvhost>` page to
configure virtual hosts).
:doc:`Manage virtual hosts<configvhost>` page to configure virtual hosts)
or the DevOps Handler (See :doc:`SSO as a Service<ssoaas>`).
This FastCGI server can be used for all LLNG components. It compiles
enabled components on-the-fly.
This FastCGI server can be implemented for all LL::NG components.
It compiles enabled components just-in-time.
Start
-----
Using packages
~~~~~~~~~~~~~~
Using package
~~~~~~~~~~~~~
You just have to install lemonldap-ng-fastcgi-server package, it will be
started automatically.
@ -32,15 +32,18 @@ Configuration
FastCGI server has few parameters. They can be set by environment
variables (read by startup script) or by command line options. A default
configuration file can be found in
``/usr/local/lemonlda-ng/etc/default/llng-fastcgi-server`` (or
``/usr/local/lemonldap-ng/etc/default/llng-fastcgi-server`` (or
``/etc/default/lemonldap-ng-fastcgi-server`` in Debian package).
The FastCGI server reads also ``LLTYPE`` parameter in FastCGI requests
(see portal-nginx.conf or manager-nginx.conf) to choose which module is
called:
- ``cgi`` for the portal (or any CGI: it works like PHP-FPM for Perl !)
- ``cgi`` to run .cgi scripts in FastCGI compatibility mode
- ``psgi`` ro run .psgi scripts under FastCGI
- ``manager`` for the manager
- ``handler`` for the handler
- ``portal`` for the portal
- ``status`` to see statistics (if enabled)
if ``LLTYPE`` is set to another value or not set, FastCGI server works

View File

@ -28,11 +28,13 @@ Unifying authentications (Identity Federation)
LL::NG can easily exchange with other authentication systems by using
SAML, OpenID or CAS protocoles. It may be the backbone of a
heterogeneous architecture. LL:NG can be set as Identity provider,
heterogeneous architecture.
LL:NG can be set as Identity provider,
Service Provider or Protocol Proxy
(:doc:`LL::NG as federation protocol proxy<federationproxy>`).
Its SOAP API can also be used to dialogue directly with your custom
Its REST / SOAP API can also be used to dialogue directly with your custom
applications.
Sessions
@ -48,8 +50,7 @@ opened sessions:
- by users
- by IP *(IPv4 and IPv6)*
- by double IP (sessions opened by the same user from multiple
computers)
- by double IP (sessions opened by the same user from multiple computers)
- by date
It can be used to delete a session
@ -59,9 +60,8 @@ It can be used to delete a session
Session restrictions
~~~~~~~~~~~~~~~~~~~~
By default, a user can open several
:doc:`sessions<sessions>`. LL::NG can restrict
the following:
By default, a user can open several :doc:`sessions<sessions>`.
LL::NG can restrict the following:
- Allow only one session per user
- Allow only one IP address per user
@ -72,17 +72,17 @@ Those capabilities can be used simultaneously or separately.
Double cookie
~~~~~~~~~~~~~
LL::NG can be configured to provides
:doc:`2 cookies<ssocookie>`:
LL::NG can be configured to provides :doc:`2 cookies<ssocookie>`:
- one secured (SSL only) for sensitive applications
- one unsecured for other applications
So that if the http cookie is stolen, sensitive applications remain secured.
Notifications
-------------
LL::NG can be used to notify users with a message when authenticating. This can be used to
inform of a change in access rights, the publication of a new IT charter, etc. (See
:doc:`notifications<notifications>` for more details)
inform of a change in access rights, the publication of a new IT charter, etc...
(See :doc:`notifications<notifications>` for more details)

View File

@ -1,8 +1,7 @@
LL::NG as federation protocol proxy
===================================
LL::NG can use federation protocols (SAML, CAS, OpenID) independently
to:
LL::NG can use federation protocols (SAML, CAS, OpenID) independently to:
- authenticate users
- provide identities to other systems
@ -11,7 +10,7 @@ So you can configure it to authenticate users using a federation
protocol and simultaneously to provide identities using other(s)
federation protocols.
Schemes tested:
Tested schemes:
- SAML / OpenID-Connect:
@ -30,8 +29,8 @@ Schemes tested:
:doc:`CAS<idpcas>`/:doc:`SAML<authsaml>` proxy **<=>** SAML
Identity Provider
Note that OpenID-Connect consortium hasn't already defined single-logout
initiated by OpenID-Connect Provider. LLNG will implement it when this
Note that OpenID-Connect consortium has not already defined single-logout
initiated by OpenID-Connect Provider. LL::NG will implement it when this
standard will be published.

View File

@ -22,7 +22,7 @@ anything to the user.
If you configure form replay with LL::NG, the Handler will detect forms
to fill, add a javascript in the html page to fill form fields with
dummy datas and submit it, then intercept the POST request and add POST
dummy data and submit it, then intercept the POST request and add POST
data in the request body.
POST data can be static values or computed from user's session.
@ -76,8 +76,8 @@ For example:
- postmail: $mail
- poststatic: 'static'
Go in Manager, "Virtual Hosts" » *virtualhost* » "Form replay" and click
on "New form replay".
Go in Manager, ``Virtual Hosts`` » ``virtualhost`` » ``Form replay`` and click
on ``New form replay``.
|image0|

View File

@ -25,7 +25,7 @@ Plack servers protection or Nginx/\ :doc:`SSOaaS<ssoaas>` FastCGI/uWSGI server S
Types are:
- *(Main)*: link between Main and platform
- :doc:`AuthBasic<handlerauthbasic>`
- :doc:`AuthBasic<authbasichandler>`
- :doc:`CDA<cda>`
- :doc:`DevOps<devopshandler>`
- :doc:`DevOps+ServiceToken<devopssthandler>`

Some files were not shown because too many files have changed in this diff Show More