Skip to content
Snippets Groups Projects
Commit 6da0d0b6 authored by Marek Jaroš's avatar Marek Jaroš :metal:
Browse files

Merge branch '12-openid-connect-support-for-redis-or-memcache' into 'master'

Resolve "OpenID Connect - support for redis or memcache"

Closes #12

See merge request !14
parents 4225729f 080290ff
No related branches found
No related tags found
3 merge requests!24IcingaWeb v2.11.1,!22IcingaWeb v2.10.1,!14Resolve "OpenID Connect - support for redis or memcache"
Pipeline #163945 skipped
......@@ -184,12 +184,12 @@ RUN mkdir -p /usr/local/share/icingaweb2/modules/ \
/bin/ping6 \
&& usermod -aG tty www-data \
&& chmod o+w /dev/std* \
&& mkdir -p /run/php/ && chown www-data /run/php \
&& mkdir -p /run/php/ /var/cache/apache2/mod_auth_openidc/cache/ && chown www-data /run/php /var/cache/apache2/mod_auth_openidc/cache \
# Cleanup
&& apt-get purge -y linux-libc-dev libc6-dev python-dev libc-dev-bin libexpat1-dev brotli \
&& apt-get -f -y autoremove \
&& apt-get -y clean \
&& rm -rf /var/lib/apt/lists/* /var/cache/*
&& rm -rf /var/lib/apt/lists/* /var/cache/ldconfig /var/cache/debconf /var/cache/apt
# Finalize
RUN chmod +x /opt/setup/* /opt/supervisor/* /opt/run /usr/local/bin/ini_set
......
......@@ -268,7 +268,7 @@ Podpora pro OIDC je zapnuta přes proměnnou `APACHE2_OIDC_ENABLE`.
Pro úspěšnou funkci je třeba nastavit proměnné `APACHE2_OIDC_CLIENTID`, `APACHE2_OIDC_CLIENTSECRET`, `APACHE2_OIDC_REMOTE_USER_CLAIM` a cestu k metadatům poskytovatele `APACHE2_OIDC_METADATA`.
Icinga sama o sobě nijak s OIDC nespolupracuje, není tedy možné přejímat skupiny, atributy o uživatelých a další hodnoty. Funguje pouze jako SSO a předává uživatele přes `REMOTE_USER` hlavičku s tím že ostatní je třeba vyřešit pres LDAP nebo lokální skupiny v databázi.
Icinga sama o sobě nijak s OIDC nespolupracuje, není tedy možné přejímat skupiny, atributy o uživatelích a další hodnoty. Funguje pouze jako SSO a předává uživatele přes `REMOTE_USER` hlavičku s tím že ostatní je třeba vyřešit pres LDAP nebo lokální skupiny v databázi.
# Logování
......@@ -411,6 +411,17 @@ Vypsat logy lze v defaultní konfiguraci například příkazem `docker logs ici
| `APACHE2_OIDC_SESSION_TYPE` | server-cache | Typ ukládání relace |
| `APACHE2_OIDC_SESSION_DURATION` | 86400 | Maximální délka aplikační relace v sekundách |
| `APACHE2_OIDC_CACHE_ENCRYPT` | Off | Zapíná šifrování mezipaměti serveru |
| `APACHE2_OIDC_CACHE_TYPE` | file | Type OIDC mezipameti (shm, memcache, file, redis) |
| `APACHE2_OIDC_CACHE_FALLBACK` | Off | Použij "OIDCSessionType client-cookie" pokud primární mezipamět (např. memcache nebo redis) selže |
| `APACHE2_OIDC_CACHE_DIR` | /var/cache/apache2/mod_auth_openidc/cache | Adresář držící soubory mezipaměti. Použit při typu meipaměti `file` |
| `APACHE2_OIDC_CACHE_FILE_CLEAN_INTERVAL` | *unset* | Interval čištění mezipaměti v sekundách (spuštěno pouze při zápisech) pro typ mezipaměti `file` |
| `APACHE2_OIDC_CACHE_SHM_MAX` | *unset* | Udává maximální velikost pro páry položek jméno/hodnota které mohou být uloženy pro typ mezipaměti `shm` |
| `APACHE2_OIDC_CACHE_SHM_ENTRY_MAX` | *unset* | Udává maximální velikost pro jeden zápis do mezipěmti v bajtech. Použito pro mezipamět typu `shm` |
| `APACHE2_OIDC_MEMCACHE_SERVERS` | *unset* | Nastaví memcache servery pro mezipamet. Mezerou oddělený list <hostname>[:<port>] |
| `APACHE2_OIDC_REDIS_SERVER` | *unset* | Nastaví Redis server pro mezipamet <hostname>[:<port>] |
| `APACHE2_OIDC_REDIS_PASSWORD` | *unset* | Heslo pro Redis server pokud je vyžadována [autentizace](http://redis.io/commands/auth) |
| `APACHE2_OIDC_REDIS_DB` | *unset* | Logická databáze pro [select](https://redis.io/commands/select) Redis serveru |
| `APACHE2_OIDC_REDIS_TIMEOUT` | *unset* | Časový limit pro připojení k Redis serveru |
| `APACHE2_OIDC_AUTH_REQUEST_PARAMS` | *nenastaveno* | Další parametry budou poslány společně s autorizačním požadavkem |
| `TZ` | UTC | Nastav časové pásmo které má kontejner použít |
| `ICINGAWEB2_FEATURE_PHP_FPM` | true | Použij PHP-FPM a mpm_event ke zpracování PHP |
......
......@@ -272,7 +272,7 @@ Enabled with `APACHE2_OIDC_ENABLE` variable.
To successfully use the module variables `APACHE2_OIDC_CLIENTID`, `APACHE2_OIDC_CLIENTSECRET`, `APACHE2_OIDC_REMOTE_USER_CLAIM` and `APACHE2_OIDC_METADATA` need to be set.
Icingaweb itself does not support federated identity, it is not possible to source groups, user attributes or other values. This works strictly as an SSO and supplies usernames via `REMOTE_USER` header. Groups need to be source either from LDAP or local database.
Icingaweb itself does not support federated identity, it is not possible to source groups, user attributes or other values. This works strictly as an SSO and supplies usernames via `REMOTE_USER` header. Groups need to be sourced either from LDAP or a local database.
# Logging
......@@ -414,6 +414,17 @@ By default you can show logs with dommand `docker logs icingaweb`.
| `APACHE2_OIDC_SESSION_TYPE` | server-cache | Session type |
| `APACHE2_OIDC_SESSION_DURATION` | 86400 | Session duration |
| `APACHE2_OIDC_CACHE_ENCRYPT` | Off | OIDC encrypt cache |
| `APACHE2_OIDC_CACHE_TYPE` | file | OIDC Cache type (shm, memcache, file, redis) |
| `APACHE2_OIDC_CACHE_FALLBACK` | Off | Fallback to "OIDCSessionType client-cookie" when the primary cache mechanism (e.g. memcache or redis) fails |
| `APACHE2_OIDC_CACHE_DIR` | /var/cache/apache2/mod_auth_openidc/cache | Directory that holds cache files. Used when cache type is set to `file` |
| `APACHE2_OIDC_CACHE_FILE_CLEAN_INTERVAL` | *unset* | Cache file clean interval in seconds (only triggered on writes) for cache type `file` |
| `APACHE2_OIDC_CACHE_SHM_MAX` | *unset* | Specifies the maximum number of name/value pair entries that can be cached for cache type `shm` |
| `APACHE2_OIDC_CACHE_SHM_ENTRY_MAX` | *unset* | Specifies the maximum size for a single cache entry in bytes. Used with cache type `shm` |
| `APACHE2_OIDC_MEMCACHE_SERVERS` | *unset* | Specifies the memcache servers used for caching as a space separated list of <hostname>[:<port>] tuples |
| `APACHE2_OIDC_REDIS_SERVER` | *unset* | Specifies the Redis server used for caching as a <hostname>[:<port>] tuple |
| `APACHE2_OIDC_REDIS_PASSWORD` | *unset* | Password to be used if the Redis server requires [authentication](http://redis.io/commands/auth) |
| `APACHE2_OIDC_REDIS_DB` | *unset* | Logical database to [select](https://redis.io/commands/select) on the Redis server |
| `APACHE2_OIDC_REDIS_TIMEOUT` | *unset* | Timeout for connecting to the Redis servers |
| `APACHE2_OIDC_AUTH_REQUEST_PARAMS` | *unset* | Extra parameters will be sent along with the Authorization Request |
| `TZ` | UTC | Sets timezone for the container |
| `ICINGAWEB2_FEATURE_PHP_FPM` | true | Use PHP-FPM and mpm_event to process PHP |
......
......@@ -8,6 +8,15 @@ if evaluate_boolean "${APACHE2_OIDC_ENABLE}"; then
echo "Apache2: Setting up OpenID Connect"
[[ -v APACHE2_OIDC_AUTH_REQUEST_PARAMS ]] && APACHE2_OIDC_AUTH_REQ_PARAMS="OIDCAuthRequestParams \"${APACHE2_OIDC_AUTH_REQUEST_PARAMS}\""
[[ -v APACHE2_OIDC_CACHE_SHM_MAX ]] && APACHE2_OIDC_CACHE_SHM_MAX="OIDCCacheShmMax \"${APACHE2_OIDC_CACHE_SHM_MAX}\""
[[ -v APACHE2_OIDC_CACHE_SHM_ENTRY_MAX ]] && APACHE2_OIDC_CACHE_SHM_ENTRY_MAX="OIDCCacheShmEntrySizeMax \"${APACHE2_OIDC_CACHE_SHM_ENTRY_MAX}\""
[[ -v APACHE2_OIDC_CACHE_FILE_CLEAN_INTERVAL ]] && APACHE2_OIDC_CACHE_FILE_CLEAN_INTERVAL="OIDCCacheFileCleanInterval \"${APACHE2_OIDC_CACHE_FILE_CLEAN_INTERVAL}\""
[[ -v APACHE2_OIDC_MEMCACHE_SERVERS ]] && APACHE2_OIDC_MEMCACHE_SERVERS="OIDCMemCacheServers \"${APACHE2_OIDC_MEMCACHE_SERVERS}\""
[[ -v APACHE2_OIDC_REDIS_SERVER ]] && APACHE2_OIDC_REDIS_SERVER="OIDCRedisCacheServer \"${APACHE2_OIDC_REDIS_SERVER}\""
[[ -v APACHE2_OIDC_REDIS_PASSWORD ]] && APACHE2_OIDC_REDIS_PASSWORD="OIDCRedisCachePassword \"${APACHE2_OIDC_REDIS_PASSWORD}\""
[[ -v APACHE2_OIDC_REDIS_DB ]] && APACHE2_OIDC_REDIS_DB="OIDCRedisCacheDatabase \"${APACHE2_OIDC_REDIS_DB}\""
[[ -v APACHE2_OIDC_REDIS_TIMEOUT ]] && APACHE2_OIDC_REDIS_TIMEOUT="OIDCRedisCacheConnectTimeout \"${APACHE2_OIDC_REDIS_TIMEOUT}\""
cat > /etc/apache2/conf-available/oidc-auth.conf <<-END
OIDCProviderMetadataRefreshInterval ${APACHE2_OIDC_METADATA_REFRESH:-3600}
OIDCProviderMetadataURL $APACHE2_OIDC_METADATA
......@@ -25,9 +34,20 @@ if evaluate_boolean "${APACHE2_OIDC_ENABLE}"; then
OIDCSessionInactivityTimeout ${APACHE2_OIDC_SESSION_INACTIVITY_TIMEOUT:-86400}
OIDCSessionType ${APACHE2_OIDC_SESSION_TYPE:-server-cache}
OIDCSessionMaxDuration ${APACHE2_OIDC_SESSION_MAX_DURATION:-86400}
OIDCCacheType ${APACHE2_OIDC_CACHE_TYPE:-file}
OIDCSessionCacheFallbackToCookie ${APACHE2_OIDC_CACHE_FALLBACK:-Off}
OIDCCacheDir ${APACHE2_OIDC_CACHE_DIR:-/var/cache/apache2/mod_auth_openidc/cache}
OIDCCacheEncrypt ${APACHE2_OIDC_CACHE_ENCRYPT:-Off}
OIDCStateMaxNumberOfCookies 10 true
${APACHE2_OIDC_AUTH_REQ_PARAMS}
${APACHE2_OIDC_CACHE_SHM_MAX}
${APACHE2_OIDC_CACHE_SHM_ENTRY_MAX}
${APACHE2_OIDC_CACHE_FILE_CLEAN_INTERVAL}
${APACHE2_OIDC_MEMCACHE_SERVERS}
${APACHE2_OIDC_REDIS_SERVER}
${APACHE2_OIDC_REDIS_PASSWORD}
${APACHE2_OIDC_REDIS_DB}
${APACHE2_OIDC_REDIS_TIMEOUT}
<Location /icingaweb2/authentication/logout>
Redirect https://%{HTTP_HOST}$APACHE2_OIDC_REDIRECT_URI?logout=https://%{HTTP_HOST}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment