lukasmu / laravel-samlite
启用对 SAML 身份提供者的身份验证以保护您的 Laravel 应用程序
Requires
- php: ^7.3|^8.0
- ext-openssl: *
- laravel/framework: ^6.0|^7.0|^8.0|^9.0|^10.0
- onelogin/php-saml: ^3.0
Requires (Dev)
- orchestra/testbench: ^5.0|^6.0|^7.0|^8.0
- orchestra/testbench-browser-kit: ^5.0|^6.0|^7.0|^8.0
- phpseclib/phpseclib: ^2.0.27
- phpunit/phpunit: ^8.5|^9.0|^10.0
README
此包可用于快速将 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_KEY
和 SAML_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。