lukasmu/laravel-samlite

启用对 SAML 身份提供者的身份验证以保护您的 Laravel 应用程序

v0.3.2 2023-04-20 10:47 UTC

This package is auto-updated.

Last update: 2024-09-20 13:44:59 UTC


README

Latest Version on Packagist tests StyleCI Total Downloads Coverage Status

此包可用于快速将 SAML2 身份提供者身份验证添加到您的 Laravel 应用程序。因此,您的 Laravel 应用程序成为 SAML2 服务提供者。

请注意,此包基于 onelogin/php-saml。它与 aacotroneo/laravel-saml2 类似,但使用起来与 laravel/socialite 一样简单。它还试图在底层模仿默认的 Laravel 身份验证。

安装

您可以通过 composer 安装此包

composer require lukasmu/laravel-samlite

用法

安装包后,请确保设置一些环境变量。例如,当您想使用 Microsoft Azure 作为身份提供者时,请设置以下环境变量

SAML_IDP_AZURE_AD_IDENTIFIER=
SAML_IDP_AZURE_LOGIN_URL=
SAML_IDP_AZURE_LOGOUT_URL=
SAML_IDP_AZURE_CERT=

如果您的环境文件尚未包含变量 SAML_SP_PRIVATE_KEYSAML_SP_CERT,也请运行

php artisan saml:setup

然后,您希望创建一个扩展此包附带的身份验证控制器的控制器。以下是一个示例。

<?php

namespace App\Http\Controllers;

use LukasMu\Samlite\Http\Controllers\SamlController;
use LukasMu\Samlite\SamlAuth;

class AuthenticationController extends SamlController
{
    
    public function loginUser(SamlAuth $saml_auth)
    {
        $mail = $saml_auth->getAttribute('http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress')[0];
        $name = $saml_auth->getAttribute('http://schemas.xmlsoap.org/ws/2005/05/identity/claims/displayname')[0];
        $user = User::where('email', $mail)->first();
        if (!$user) {
            $user = new User;
            $user->name = $name;
            $user->email = $mail;
            $user->password = md5(rand(1,10000));
            $user->save();
        }
        $this->guard()->loginUsingId($user->id);
    }

}

最后,通过放置另一个环境变量来注册您的控制器

SAML_CONTROLLER="App\Http\Controllers\AuthenticationController"

自定义

您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="LukasMu\Samlite\SamlServiceProvider" --tag="config"

请随意设置适当的环境变量(或编辑配置文件),以添加您首选的身份提供者。

测试

您也可以通过 composer 运行所有测试

composer test

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全

如果您发现任何与安全相关的问题,请通过电子邮件 hello@lukasmu.com 反馈,而不是使用问题跟踪器。

Postcardware

您可以免费使用此包,但如果它进入您的生产环境,我们非常感谢您从您家乡寄给我们一张明信片。地址是:Lukas Müller,Dirklangendwarsstraat 5,2611HZ Delft,荷兰。

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 LICENSE