aerdes/laravel-samlite

此包已被弃用,不再维护。作者建议使用lukasmu/laravel-samlite包。

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

v0.2.1 2020-09-09 13:40 UTC

This package is auto-updated.

Last update: 2021-01-28 15:57:35 UTC


README

Latest Version on Packagist Build Status StyleCI Total Downloads

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

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

安装

您可以通过composer安装此包

composer require aerdes/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 Aerdes\LaravelSamlite\Http\Controllers\SamlController;
use Aerdes\LaravelSamlite\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="Aerdes\LaravelSamlite\SamlServiceProvider" --tag="config"

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

测试

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

composer test

变更日志

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

贡献

有关详细信息,请参阅CONTRIBUTING

安全

如果您发现任何安全相关的问题,请通过电子邮件lukas@aerdes.com联系,而不是使用问题跟踪器。

Postcardware

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

许可协议

MIT 许可协议(MIT)。更多信息请参阅 LICENSE