Concrete CMS Marketplace: Add-Ons A list of the 20 most recent Add-Ons products in the marketplace. Fri, 29 Aug 2025 08:16:45 +0000 Laminas_Feed_Writer 2 (https://getlaminas.org) https://market.concretecms.com/addons/browse Stealthy Login and Register Wed, 27 Aug 2025 09:56:40 +0000 https://market.concretecms.com/products/stealthy-login-and-register/f14ef3af-6c80-11f0-b970-0affd5227f07 f14ef3af-6c80-11f0-b970-0affd5227f07 mnakalay mnakalay 0 Login Codes Fri, 08 Aug 2025 18:14:02 +0000 https://market.concretecms.com/products/login-codes/c3441723-69d9-11f0-b970-0affd5227f07 c3441723-69d9-11f0-b970-0affd5227f07 webinstinct webinstinct 0 Customizable Count Up Mon, 30 Jun 2025 11:18:29 +0000 https://market.concretecms.com/products/customizable-count/84321b2c-4de1-11f0-abb4-0e1cf28cdc53 84321b2c-4de1-11f0-abb4-0e1cf28cdc53 garybrown garybrown 0 Business Hours Mon, 30 Jun 2025 11:17:15 +0000 https://market.concretecms.com/products/business-hours/7b51fe7e-46af-11f0-abb4-0e1cf28cdc53 7b51fe7e-46af-11f0-abb4-0e1cf28cdc53 garybrown garybrown 0 Authentication with Keycloak *Login & Registration* > *Authentication Types* dashboard page. There you'll see the Keycloak authentication type: configure it by specifying the parameters of your Keycloak server (see [Keycloak server configuration](#Keycloak-server-configuration)): - **Enable attaching existing local users to remote accounts** You can enable this option to allow ConcreteCMS users attaching their account to a Keycloak account (for example when they edit their profile in the `/account` page of the ConcreteCMS website) - **Enable detaching local users from remote accounts** You can enable this option to allow ConcreteCMS users detaching their account from a Keycloak account (for example when they edit their profile in the `/account` page of the ConcreteCMS website) - **Allow automatic registration** When users log in with Keycloak, you can turn on this option to automatically create a ConcreteCMS user if none of the existing ones is already associated to that Keycloak user. If you turn on this option, you can also choose a ConcreteCMS user group to be assigned to these newly created ConcreteCMS users. - **Try to update usernames** When an existing ConcreteCMS users log in with Keycloak, you can turn on this option to update the username of the ConcreteCMS user so that it matches the one provided by Keycloak. In case a different user already uses the same username nothing will be updated. - **Update email addresses** When an existing ConcreteCMS users log in with Keycloak, you can turn on this option to update the email address of the ConcreteCMS user so that it matches the one provided by Keycloak - **Logout from authentication server when logging out from this website** You can turn on this option to logout users from your Keycloak server whenever a user logs out from the ConcreteCMS website. Please remark that this option is available since ConcreteCMS v9.2.1. ### Keycloak Server Configuration In the Keycloak Admin Console, switch to the **realm** you want to use (it's not recommended to use the default `master` realm). In the **Clients** section, create a **new client** of type **OpenID Connect**, enabling the **Client authentication** option and keeping the **Standard flow** authentication flow enabled. In the **Valid redirect URIs** field you should specify the value displayed in your ConcreteCMS website when you configure the authentication type. Once you created the client, you need to copy its **Client ID** and **Client Secret**: they'll be needed in order to correctly configure the ConcreteCMS authentication. ### Multiple Keycloak Servers and Realms The Keycloak authentication also supports multiple Keycloak servers/realms: you can specify one or more regular expressions that email addresses should match to choose a specific Keycloak server and/or realm. For example, you may want to use a realm for the email addresses that match `*@mydomain\.com$`, and a second realm for any other address. #### Multiple Realms Provided by PHP Code Advanced users can also manage multiple Keycloak server configurations via PHP code. First of all, you have to create a PHP class that implements the [`vvLab\KeycloakAuth\ServerConfigurationProvider` interface](https://github.com/vvlab-dev/ConcreteCMS-keycloak/blob/main/src/ServerConfigurationProvider.php). Then you can bind that class. This can be done - in the `application/bootstrap/app.php` file, with something like this: ```php $app->singleton(vvLab\KeycloakAuth\ServerConfigurationProvider::class, YourClass::class); ``` - in the `on_start()` method of a custom ConcreteCMS package: ```php public function on_start() { $this->app->singleton(\vvLab\KeycloakAuth\ServerConfigurationProvider::class, YourClass::class); } ``` ## Mappings of User Groups and User Attributes This package can automatically update the ConcreteCMS user attributes and groups to reflect the ones defined in the Keycloak server. This can be done in the *System & Settings* > *Login & Registration* > *Authentication Types* > *Keycloak Mappings* dashboard page. ### Claim IDs When users log in with Keycloak, the Keycloak server sends Concrete the user details. Every detail is identified by an unique ID (called **Claim ID**). In order to inspect the Claim IDs received by ConcreteCMS you can enable a one-time logging session: 1. click the *Enable log* button 2. in another browser (or in an incognito browser session) log in by using Keycloak 3. close that other browser/incognito session and go back to the Keycloak Mappings dashboard page 4. click the *Refresh* button You'll see the list of Claim ID and their associated values. ### Mapping of User Groups You may want to manage the user groups in a centralized way, defining them in the Keycloak server. To ensure that a user is automatically added and/or removed from a ConcreteCMS group, in the Keycloak admin console you have to edit the `profile` client scope, adding a mapper by using the `Group Membership` configuration, assigning it a Token Claim Name (for example, `user_groups`) and instructing Keycloak to add it to the ID Token. First of all, in the ConcreteCMS dashboard page, you have to enter the *Claim ID* you specified above (`user_groups` in the example). Then, in the *Remote group* field you can specify the name of the Keycloak user group (either with an absolute path - that is starting with a `/`, or the relative group name). You can associate that remote group to a local ConcreteCMS user group. You can also configure ConcreteCMS so that users are automatically added and/or removed from groups: - if *Join local group if remote group is present* is checked, users will be added automatically to the ConcreteCMS user group if the Keycloak user group is received upon login - if *Leave local group if remote group is absent* is checked, users will be removed automatically from the ConcreteCMS user group if the Keycloak user group is not received upon login ### Mapping of User Attributes You can create/update/remove ConcreteCMS user attributes to reflect the values of the received Clam IDs received in the login phase. For example, when a user logs in, you may want to update the value of the ConcreteCMS user attributes named *First Name* and *Last Name* so that they match the values of the `given_name` and `family_name` Claim IDs. We currently support these ConcreteCMS attribute types: - Address (handle: `address`) - Checkbox (handle: `boolean`) - Email (handle: `email`) - Number (handle: `number`) - Phone Number (handle: `telephone`) - Text (handle: `text`) - Text Area (handle: `textarea`) - URL (handle: `url`) ## Using a Keycloak Development Server You can test the Keycloak authentication type by running a development instance of Keycloak via docker. For example, to create a docker container with: - container name: keycloak_ccm - available at http://localhost:8080 - Administrator username: admin - Administrator password: admin - Keycloak server version: 26.2.5 You can run this command: ``` docker create --name keycloak_ccm --publish 8080:8080 --env KC_BOOTSTRAP_ADMIN_USERNAME=admin --env KC_BOOTSTRAP_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:26.2.5 start-dev ``` Then you can start that container with ``` docker start keycloak_ccm ``` After a few seconds, you'll be able to access the Keycloak server at http://localhost:8080 ## Open Source! This package is open source: you can find it [on GitHub](https://github.com/vvlab-dev/ConcreteCMS-keycloak).]]> Wed, 18 Jun 2025 11:54:52 +0000 https://market.concretecms.com/products/authentication-keycloak/62291e11-4084-11f0-abb4-0e1cf28cdc53 62291e11-4084-11f0-abb4-0e1cf28cdc53 vvlab vvlab 0 Minify HTML Sat, 31 May 2025 09:12:56 +0000 https://market.concretecms.com/products/minify-html/be01aca6-3dfe-11f0-abb4-0e1cf28cdc53 be01aca6-3dfe-11f0-abb4-0e1cf28cdc53 fabianbitter fabianbitter 0 Simple Spacer Wed, 04 Jun 2025 10:45:04 +0000 https://market.concretecms.com/products/simple-spacer/d69b5d79-3ca3-11f0-abb4-0e1cf28cdc53 d69b5d79-3ca3-11f0-abb4-0e1cf28cdc53 garybrown garybrown 0 Random Image from Set Wed, 04 Jun 2025 16:50:09 +0000 https://market.concretecms.com/products/random-image-set/8e8fe5a0-3c83-11f0-abb4-0e1cf28cdc53 8e8fe5a0-3c83-11f0-abb4-0e1cf28cdc53 garybrown garybrown 0 Image Floats Mon, 23 Jun 2025 06:35:47 +0000 https://market.concretecms.com/products/image-floats/e640490d-3a27-11f0-abb4-0e1cf28cdc53 e640490d-3a27-11f0-abb4-0e1cf28cdc53 steevb steevb 0 Box Gallery Tue, 19 Aug 2025 06:43:29 +0000 https://market.concretecms.com/products/box-gallery/e5304a12-34fd-11f0-abb4-0e1cf28cdc53 e5304a12-34fd-11f0-abb4-0e1cf28cdc53 steevb steevb 0 Shortcodes Mon, 28 Jul 2025 21:06:28 +0000 https://market.concretecms.com/products/shortcodes/3b61d0a8-3429-11f0-abb4-0e1cf28cdc53 3b61d0a8-3429-11f0-abb4-0e1cf28cdc53 fabianbitter fabianbitter 0 Alert Popup Mon, 09 Jun 2025 06:43:11 +0000 https://market.concretecms.com/products/alert-popup/f7435deb-334d-11f0-abb4-0e1cf28cdc53 f7435deb-334d-11f0-abb4-0e1cf28cdc53 mlocati mlocati 0 Simple Google Reviews Sun, 11 May 2025 19:53:04 +0000 https://market.concretecms.com/products/simple-google-reviews/54db1a62-2e4a-11f0-abb4-0e1cf28cdc53 54db1a62-2e4a-11f0-abb4-0e1cf28cdc53 fabianbitter fabianbitter 0 Database Manager Sun, 11 May 2025 19:53:05 +0000 https://market.concretecms.com/products/database-manager/4d9a9dc5-2e4a-11f0-abb4-0e1cf28cdc53 4d9a9dc5-2e4a-11f0-abb4-0e1cf28cdc53 fabianbitter fabianbitter 0 File System Manager Sun, 11 May 2025 19:53:06 +0000 https://market.concretecms.com/products/file-system-manager/4655b96d-2e4a-11f0-abb4-0e1cf28cdc53 4655b96d-2e4a-11f0-abb4-0e1cf28cdc53 fabianbitter fabianbitter 0 Map Styles Wed, 07 May 2025 11:05:49 +0000 https://market.concretecms.com/products/map-styles/e7051b60-1ecf-11f0-abb4-0e1cf28cdc53 e7051b60-1ecf-11f0-abb4-0e1cf28cdc53 fabianbitter fabianbitter 0 File Storage for S3 Sun, 13 Jul 2025 15:07:43 +0000 https://market.concretecms.com/products/file-storage-s3/f04ae0ce-1e0d-11f0-abb4-0e1cf28cdc53 f04ae0ce-1e0d-11f0-abb4-0e1cf28cdc53 fabianbitter fabianbitter 0 Simple Toastify Notifications Sat, 10 May 2025 20:00:22 +0000 https://market.concretecms.com/products/simple-toastify-notifications/1e6503cc-1d5a-11f0-abb4-0e1cf28cdc53 1e6503cc-1d5a-11f0-abb4-0e1cf28cdc53 fabianbitter fabianbitter 0 Fade In Sections Wed, 07 May 2025 07:52:15 +0000 https://market.concretecms.com/products/fade-sections/494b247d-1b58-11f0-abb4-0e1cf28cdc53 494b247d-1b58-11f0-abb4-0e1cf28cdc53 fabianbitter fabianbitter 0 Simple TypeIt Wed, 04 Jun 2025 18:33:38 +0000 https://market.concretecms.com/products/simple-typeit/fb8b9788-1b52-11f0-abb4-0e1cf28cdc53 fb8b9788-1b52-11f0-abb4-0e1cf28cdc53 fabianbitter fabianbitter 0