apacheopenid-connectkeycloakapache-modules

How to install mod_auth_openidc module in an Apache server running on Docker


I am trying to add the mod_auth_openidc module to an Apache server running on Docker. After adding LoadModule auth_openidc_module modules/mod_auth_openidc.so, I create the image and run it, getting this error:

httpd: Syntax error on line 69 of /usr/local/apache2/conf/httpd.conf: Cannot load modules/mod_auth_openidc.so into server: libcjose.so.0: cannot open shared object file: No such file or directory

So I downloaded that dependency and added the necessary LoadModule statement:

LoadModule libcjose_module modules/libcjose.so.0

Now the error is about libjansson.so.4:

httpd: Syntax error on line 68 of /usr/local/apache2/conf/httpd.conf: Cannot load modules/libcjose.so.0 into server: libjansson.so.4: cannot open shared object file: No such file or directory

I repeated the previous steps, downloading libjansson.so.4 from https://packages.debian.org/wheezy/libjansson4, adding it to he Dockerfile, the Apache configuration LoadModule libjansson_module modules/libjansson.so.4 and:

httpd: Syntax error on line 67 of /usr/local/apache2/conf/httpd.conf: Can't locate API module structure `libjansson_module' in file /usr/local/apache2/modules/libjansson.so.4: /usr/local/apache2/modules/libjansson.so.4: undefined symbol: libjansson_module

So how can I load the jansson module???

This is my Dockerfile:

FROM httpd:2.4
RUN apt-get update && apt-get install -y \
curl
COPY ./libjansson.so.4 /usr/local/apache2/modules/libjansson.so.4
COPY ./libcjose.so.0 /usr/local/apache2/modules/libcjose.so.0
COPY ./mod_auth_openidc.so /usr/local/apache2/modules/mod_auth_openidc.so
COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf

And httpd.conf:

LoadModule libjansson_module modules/libjansson.so.4
LoadModule libcjose_module modules/libcjose.so.0
LoadModule auth_openidc_module modules/mod_auth_openidc.so

Solution

  • Instead of manually downloading the necessary libraries I moved that process to the Dockerfile, now the image is created correctly:

    FROM httpd:2.4
    
    COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf
    COPY ./server.crt /usr/local/apache2/conf/
    COPY ./server.key /usr/local/apache2/conf/
    COPY ./mod_auth_openidc.so /usr/local/apache2/modules/mod_auth_openidc.so
    
    RUN apt-get update && apt-get install -y curl && apt-get install -y libjansson4 && apt-get install -y wget && apt-get install -y libhiredis0.10 && apt-get install -y apache2-bin
    RUN wget https://github.com/zmartzone/mod_auth_openidc/releases/download/v2.3.0/libcjose0_0.5.1-1.jessie.1_amd64.deb && dpkg -i libcjose0_0.5.1-1.jessie.1_amd64.deb
    RUN wget https://github.com/zmartzone/mod_auth_openidc/releases/download/v2.3.3/libapache2-mod-auth-openidc_2.3.3-1.jessie.1_amd64.deb && \
    dpkg -i libapache2-mod-auth-openidc_2.3.3-1.jessie.1_amd64.deb