Configuration

Environment Variables

Variable Type Required Default Description
KEYCLOAK_URL string Yes - Keycloak server URL
KEYCLOAK_CLIENT_ID string Yes - OAuth2 client ID
KEYCLOAK_CLIENT_SECRET string Yes - OAuth2 client secret
KEYCLOAK_REDIRECT_URI string Yes - OAuth2 redirect URI
KEYCLOAK_REALM string No master Keycloak realm
KEYCLOAK_SCOPES json No ["openid", "profile", "email"] OAuth2 scopes
KEYCLOAK_PROTECTED_ROUTES json No ["/dashboard", "/profile", "/admin"] Protected routes
KEYCLOAK_CALLBACK_ROUTE string No /auth/callback Callback route
KEYCLOAK_LOGOUT_ROUTE string No /auth/logout Logout route
KEYCLOAK_SESSION_LIFETIME int No 3600 Session lifetime
KEYCLOAK_SECURE_COOKIES bool No false Secure cookies
KEYCLOAK_HTTP_TIMEOUT int No 30 HTTP timeout
KEYCLOAK_HTTP_CONNECT_TIMEOUT int No 30 HTTP connect timeout
KEYCLOAK_HTTP_VERIFY bool No false SSL verification

Required Configuration

The following parameters are mandatory and must be provided:

# Keycloak server configuration.
KEYCLOAK_URL=https://<YOUR_KEYCLOAK_SERVER>

# OAuth2 client credentials.
KEYCLOAK_CLIENT_ID=your-client-id
KEYCLOAK_CLIENT_SECRET=your-client-secret

# OAuth2 redirect URI.
KEYCLOAK_REDIRECT_URI=https://<YOUR_APP_URL>/auth/callback

Routes Configuration

auth_callback:
    path: /auth/callback
    handler: Derafu\Auth\Controller\CallbackController::handle

Services Configuration

services:

    _defaults:
        autowire: true
        autoconfigure: true
        public: false

    Derafu\Auth\Contract\AuthConfigurationInterface:
        class: Derafu\Auth\Configuration\AuthConfiguration
        arguments:
            $config:
                keycloak_url: '%env(default::string:KEYCLOAK_URL)%'
                realm: '%env(default::string:KEYCLOAK_REALM)%'
                client_id: '%env(default::string:KEYCLOAK_CLIENT_ID)%'
                client_secret: '%env(default::string:KEYCLOAK_CLIENT_SECRET)%'
                redirect_uri: '%env(default::string:KEYCLOAK_REDIRECT_URI)%'
                scopes: '%env(default::json:KEYCLOAK_SCOPES)%'
                protected_routes: '%env(default::json:KEYCLOAK_PROTECTED_ROUTES)%'
                callback_route: '%env(default::string:KEYCLOAK_CALLBACK_ROUTE)%'
                logout_route: '%env(default::string:KEYCLOAK_LOGOUT_ROUTE)%'
                session_lifetime: '%env(default::int:KEYCLOAK_SESSION_LIFETIME)%'
                secure_cookies: '%env(default::bool:KEYCLOAK_SECURE_COOKIES)%'
                http_client_options:
                    timeout: '%env(default::int:KEYCLOAK_HTTP_TIMEOUT)%'
                    connect_timeout: '%env(default::int:KEYCLOAK_HTTP_CONNECT_TIMEOUT)%'
                    verify: '%env(default::bool:KEYCLOAK_HTTP_VERIFY)%'

    Derafu\Auth\Contract\AuthenticationProviderInterface:
        class: Derafu\Auth\Service\KeycloakAuthenticationService

    Derafu\Auth\Contract\SessionManagerInterface:
        class: Derafu\Auth\Service\SessionService

    Derafu\Auth\Contract\RouteValidatorInterface:
        class: Derafu\Auth\Validator\RouteValidator

    Derafu\Auth\Middleware\AuthenticationMiddleware: ~

    Derafu\Auth\Controller\CallbackController:
        public: true

On this page

Last updated on 29/07/2025 by Anonymous