madbob/laravel-spid-cie-oidc

Laravel 的意大利 SPID/CIE 通过 SAML 和 OIDC 身份验证

资助包维护!
其他

This package is auto-updated.

Last update: 2024-09-19 15:35:48 UTC


README

尽管名称如此,此包简化了 Laravel 应用程序在 SAML 和 OIDC 协议上的 SPID/CIE 身份验证。

本质上是对官方包 spid-cie-phpspid-cie-oidc-php 的一次重大修订,修改后的包更容易安装、配置和集成到自己的应用程序中。

如需支持和咨询,请发送邮件至 info@madbob.org

安装

# Installa il pacchetto nel tuo progetto Laravel
composer require madbob/laravel-spid-cie-oidc

# Inizializza il file di configurazione in config/spid-cie-oidc.php
# È raccomandato revisionare e correggere i parametri di questo file di
# configurazione prima di eseguire i successivi comandi, in particolare la
# sezione "organization" e l'abilitazione dei protocolli SAML e/o OIDC
php artisan vendor:publish --provider="MadBob\SCOL\SCOLServiceProvider" --tag=config

# Genera i certificati
php artisan scol:make-certificates

# Per abilitare l'autenticazione SAML
php artisan scol:deploy-saml

每当修改 config/spid-cie-oidc.php 文件中的内容时,都需要执行 php artisan scol:deploy-saml 命令,以便将更新同步到 SimpleSAML 的静态配置中。命令 php artisan scol:make-certificates 在配置的路径下生成证书,并且请注意!会覆盖任何已存在的文件。

初始设置的一个重要步骤是准备自己的身份验证回调:需要准备一个实现 MadBob\SCOL\Interfaces\UserLogin 接口的类,并在配置中指定其路径(在 spid-cie-oidc.operations.login)。在 src/Helpers/DefaultLogin.php 文件中可以找到一个示例及其相关细节。如果需要,还可以为处理注销操作创建一个实现 MadBob\SCOL\Interfaces\UserLogout 接口的类。

在登录面板中,可以使用以下代码获取不同系统上的不同链接以激活身份验证过程

$buttons = new \MadBob\SCOL\Helpers\Buttons();

$cie_link = $buttons->buttonCie();
if ($cie_link) {
    echo '<a href="' . $cie_link . '">Entra con CIE</a>';
}

$spid_providers = $buttons->buttonSpid();
if ($spid_providers) {
    foreach($spid_providers as $provider) {
        echo '<a href="' . $provider->link . '">Entra con ' . $provider->name . '</a>';
    }
}

注意

位于 deps/configdeps/lib 文件夹中的文件已完整复制自 该存储库,该存储库是 另一个存储库 的分支——经过修订和修正。许多文件在此模块中未使用,但保留了整个文件夹,并直接使用未修改的代码以简化未来的更新。

位于 deps/saml 文件夹中的文件已复制自 该存储库,并根据需要适配 SimpleSAML 版本 2(原始实现基于 SimpleSAML 1.19.8,由于依赖关系,与 Laravel 更新版本不兼容)。实际上,这些文件覆盖了 SimpleSAML 的某些内部类,通过命名空间“占据”以强制将 SPID 协议的独特之处引入 SAML 协议中:如果在安装时通过 Composer 观察到“Warning: Ambiguous class resolution”的警告,请知道这是“正常”的...

此模块生成的所有文件(证书、数据库等)都保存在 storage/oidc 文件夹中,因此该文件夹必须可由 Web 服务器写入(以及整个 storage 文件夹)。

SAML

为了启用 SAML(目前:唯一可以通过 SPID 进行身份验证的方式),需要额外的注意事项。

执行 php artisan scol:deploy-saml 命令后,SimpleSAML 的配置中会记录 spid-cie-oidc.routes.saml.module 配置的路径值作为基础路径,然后在 Web 服务器的配置中处理该路径,以作为 SimpleSAML 公共文件夹的别名。以下是一个参考配置,假设 spid-cie-oidc.routes.saml.module 被设置为 spidcie

server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name tuodominio.it;
        root /var/www/tuodominio/public/;

        # ... altri parametri della configurazione per Laravel...

        location /spidcie/ {
            alias /var/www/tuopath/vendor/simplesamlphp/simplesamlphp/public/;
            index index.php;
            location ~ ^(?<prefix>/spidcie)(?<phpfile>.+?\.php)(?<pathinfo>/.*)?$ {
                fastcgi_param SCRIPT_FILENAME $document_root$phpfile;
                fastcgi_param PATH_INFO $pathinfo if_not_empty;

                # Questo serve solo se si definisce un path esplicito per la
                # configurazione di SimpleSAML in spid-cie-oidc.saml.simplesaml.folder
                # Se spid-cie-oidc.saml.simplesaml.folder == false, questa riga
                # può essere omessa
                fastcgi_param SIMPLESAMLPHP_CONFIG_DIR /var/www/tuodominio/storage/oidc/simplesaml/;

                fastcgi_pass unix:/run/php/php8.2-fpm.sock;
                include fastcgi_params;
            }
        }
}

许可证

laravel-spid-cie-oidc 以 Apache 2 许可证分发。

版权所有者