Socialite Auth Plugins
Hi,
LibreNMS supports SAML/Oauth Auth using the socialite plugin as of 22.3.0. Are you able to package up some of the common providers into the image so that they can be used without extending the image manually?
If you run lnms plugin:add socialiteproviders/github it will write the plugin to the file composer.plugins.json
So if you mount this file it should work, but every update to it needs to be followed by a "composer install". But not very optimal no :)
tried installing the plugins inside a docker container bash-5.1# lnms plugin:add socialiteproviders/github -v Info from https://repo.packagist.org: #StandWithUkraine Using version ^4.1 for socialiteproviders/github ./composer.json has been updated Running composer update socialiteproviders/github
pre-update-cmd: LibreNMS\ComposerHelper::preUpdate Loading composer repositories with package information Updating dependencies Dependency resolution completed in 0.001 seconds Your requirements could not be resolved to an installable set of packages.
Problem 1 - phpunit/phpunit is locked to version 9.5.24 and an update of this package was not requested. - phpunit/phpunit 9.5.24 requires ext-xmlwriter * -> it is missing from your system. Install or enable PHP's xmlwriter extension.
To enable extensions, verify that they are enabled in your .ini files:
- /etc/php81/php.ini
- /etc/php81/conf.d/00_ctype.ini
- /etc/php81/conf.d/00_curl.ini
- /etc/php81/conf.d/00_dom.ini
- /etc/php81/conf.d/00_fileinfo.ini
- /etc/php81/conf.d/00_gd.ini
- /etc/php81/conf.d/00_gmp.ini
- /etc/php81/conf.d/00_ldap.ini
- /etc/php81/conf.d/00_mbstring.ini
- /etc/php81/conf.d/00_opcache.ini
- /etc/php81/conf.d/00_openssl.ini
- /etc/php81/conf.d/00_pdo.ini
- /etc/php81/conf.d/00_posix.ini
- /etc/php81/conf.d/00_session.ini
- /etc/php81/conf.d/00_simplexml.ini
- /etc/php81/conf.d/00_snmp.ini
- /etc/php81/conf.d/00_sockets.ini
- /etc/php81/conf.d/00_tokenizer.ini
- /etc/php81/conf.d/00_xml.ini
- /etc/php81/conf.d/00_zip.ini
- /etc/php81/conf.d/01_mysqlnd.ini
- /etc/php81/conf.d/01_phar.ini
- /etc/php81/conf.d/02_pdo_mysql.ini
- /etc/php81/conf.d/10_igbinary.ini
- /etc/php81/conf.d/20_memcached.ini
- /etc/php81/conf.d/opcache.ini
You can also run php --ini in a terminal to see which files are used by PHP in CLI mode.
Alternatively, you can run Composer with --ignore-platform-req=ext-xmlwriter to temporarily ignore these required extensions.
Running update with --no-dev does not mean require-dev is ignored, it just means the packages will not be installed. If dev requirements are blocking the update you have to resolve those problems.
You can also try re-running composer require with an explicit version constraint, e.g. "composer require socialiteproviders/github:*" to figure out if any version is installable, or "composer require socialiteproviders/github:^2.1" if you know which you need.
Installation failed, reverting ./composer.json and ./composer.lock to their original content.
Same problem here like @xtra-be - Any solution for that? Librenms version: 23.1.1
Tried to install socialiteproviders/okta
@Jellyfrog looks like it is trying to install developer dependencies? Missing a --no-dev on the command?
is this problem fixed? I try to install plugin with 2023.2.0 docker image but get similar issue.
ccddff85ecfe:/opt/librenms# lnms plugin:add socialiteproviders/saml2 -v
./composer.json is not writable.
ccddff85ecfe:/opt/librenms# chmod 777 composer.*
ccddff85ecfe:/opt/librenms# lnms plugin:add socialiteproviders/saml2 -v
Info from https://repo.packagist.org: #StandWithUkraine
./composer.json has been updated
Running composer update socialiteproviders/saml2
> pre-update-cmd: LibreNMS\ComposerHelper::preUpdate
Loading composer repositories with package information
Updating dependencies
Dependency resolution completed in 0.003 seconds
Your requirements could not be resolved to an installable set of packages.
Problem 1
- phpunit/phpunit is locked to version 9.5.27 and an update of this package was not requested.
- phpunit/phpunit 9.5.27 requires ext-xmlwriter * -> it is missing from your system. Install or enable PHP's xmlwriter extension.
To enable extensions, verify that they are enabled in your .ini files:
- /etc/php81/php.ini
- /etc/php81/conf.d/00_ctype.ini
- /etc/php81/conf.d/00_curl.ini
- /etc/php81/conf.d/00_dom.ini
- /etc/php81/conf.d/00_fileinfo.ini
- /etc/php81/conf.d/00_gd.ini
- /etc/php81/conf.d/00_gmp.ini
- /etc/php81/conf.d/00_ldap.ini
- /etc/php81/conf.d/00_mbstring.ini
- /etc/php81/conf.d/00_opcache.ini
- /etc/php81/conf.d/00_openssl.ini
- /etc/php81/conf.d/00_pdo.ini
- /etc/php81/conf.d/00_posix.ini
- /etc/php81/conf.d/00_session.ini
- /etc/php81/conf.d/00_simplexml.ini
- /etc/php81/conf.d/00_snmp.ini
- /etc/php81/conf.d/00_sockets.ini
- /etc/php81/conf.d/00_tokenizer.ini
- /etc/php81/conf.d/00_xml.ini
- /etc/php81/conf.d/00_zip.ini
- /etc/php81/conf.d/01_mysqlnd.ini
- /etc/php81/conf.d/01_phar.ini
- /etc/php81/conf.d/02_pdo_mysql.ini
- /etc/php81/conf.d/10_igbinary.ini
- /etc/php81/conf.d/20_memcached.ini
- /etc/php81/conf.d/opcache.ini
You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode.
Alternatively, you can run Composer with `--ignore-platform-req=ext-xmlwriter` to temporarily ignore these required extensions.
Running update with --no-dev does not mean require-dev is ignored, it just means the packages will not be installed. If dev requirements are blocking the update you have to resolve those problems.
You can also try re-running composer require with an explicit version constraint, e.g. "composer require socialiteproviders/saml2:*" to figure out if any version is installable, or "composer require socialiteproviders/saml2:^2.1" if you know which you need.
Installation failed, reverting ./composer.json and ./composer.lock to their original content.
ccddff85ecfe:/opt/librenms#
I found the root cause. It is caused by package 'php-xmlwriter' not install.
Install apk add php-xmlwriter and the plugin installed success!
But before that. There are few file/folder permissions need to be modify to allow read/write action.
below is the Dockerfile to add that plugin.
FROM llibrenms/librenms:23.2.0
RUN apk --update --no-cache add -t build-dependencies php-xmlwriter 2>&1 | tee -a authentik.log \
&& cd /opt/librenms/ \
&& chmod 777 /opt/librenms/composer.* \
/opt/librenms/storage/logs/laravel.log \
/opt/librenms/logs/librenms.log \
/opt/librenms/scripts/composer_wrapper.php \
&& chmod 777 /opt/librenms/scripts \
/opt/librenms \
/opt/librenms/vendor/socialiteproviders \
/opt/librenms/vendor/composer \
/opt/librenms/vendor/composer/* \
/opt/librenms/bootstrap/* \
&& lnms plugin:add socialiteproviders/authentik 2>&1 | tee -a authentik.log