在 Mac 上使用 Apache 的 mod_auth_openidc
由于没有提供mod_auth_openidc的Mac二进制文件,所以我自己编译并集成了它,经历了一些曲折才最终使其可用,因此我打算记录下来。
我希望可以通过互联网访问Mac本地浏览器应用,并且想要使用OpenIDConnect来进行浏览许可。
环境
-
- macOS Monterey
-
- Apache 2.4.55 (Homebrew)
- mod_auth_openidc 2.4.9.4
操作步骤
由于我们要使用Homebrew版的Apache,所以需要停止默认安装的Apache。
尽管默认的Apache也可以使用,但需要进行代码签名,因此在这种情况下,需要为编译好的 mod_auth_openidc.so 文件进行签名以使用。
$ sudo apachectl stop
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
如果没有安装Homebrew,将安装它。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装构建所需的软件包。
(虽然在构建cjose时openssl也是必需的,但目前(截止2023年2月),使用OpenSSL 3系列在构建过程中会发生错误,因此使用了curl所依赖的openssl@1.1版本。)
$ brew install curl jansson pcre apr-util apr httpd autoconf automake pkg-config libtool
编译并安装cjose。
$ mkdir ~/Documents/src
$ cd ~/Documents/src/
$ git clone https://github.com/cisco/cjose.git
$ cd cjose
$ ./configure CFLAGS="-I/usr/local/include" --with-openssl=/usr/local/opt/openssl@1.1 --with-jansson=/usr/local/opt/jansson --prefix /usr/local/opt/cjose
$ make
$ make install
构建mod_auth_openidc。
从v2.4.10版本开始,编译非常困难,所以我们只好在v2.4.9系列上做妥协。
$ cd ~/Documents/src/
$ git clone https://github.com/zmartzone/mod_auth_openidc.git
$ cd mod_auth_openidc
$ git checkout refs/tags/v2.4.9.4
$ ./autogen.sh
$ ./configure CJOSE_LIBS=-L/usr/local/opt/cjose/lib CJOSE_CFLAGS=-I/usr/local/opt/cjose/include OPENSSL_LIBS=-L/usr/local/opt/openssl@1.1/lib OPENSSL_CFLAGS=-I/usr/local/opt/openssl@1.1/include
$ make
$ make install
确认能够加载模块。
$ vi /usr/local/etc/httpd/httpd.conf
:
LoadModule auth_openidc_module lib/httpd/modules/mod_auth_openidc.so
:
$ sudo apachectl configtest
如果成功地嵌入了模块,按照在互联网上广泛见到的步骤进行设置,就可以让它运行起来。
请参考以下网站