scollmore / zerotrust
一个用于将 Azure 活动目录作为中间件安全包装添加到您的应用程序的包。
Requires
- php: ^8.2
- illuminate/support: ~10
Requires (Dev)
- laravel/pint: ^1.13
- orchestra/testbench: ^8.21
- pestphp/pest: ^2.34
README
Zero trust 是一个 Laravel 中间件,它使用 Azure 活动目录为您的企业应用程序提供一个身份验证中间件包装,让您能够利用账户限制和 2FA(如果您的 AD 中已启用)而无需触及应用程序的身份验证。
将中间件添加到您的路由(s)后,用户将看到一个登录选择页面(如果添加了多个目录)或直接被发送到 Microsoft 登录页面。
设置 Microsoft Azure 活动目录
要设置 Azure AD 以使用此包,您可以按照 Microsoft 的以下指南进行操作 这里。
对于您的回调 URL,您需要使用 https://yourdomain.com/zero-trust/callback。
安装
通过 Composer
composer require scolmore/zerotrust
发布配置和视图
php artisan vendor:publish --provider="Scolmore\ZeroTrust\ZeroTrustServiceProvider"
用法
配置
以下内容需要添加到您的 .env 文件中
ZEROTRUST_TITLE="My Organisation" ZEROTRUST_APP_NAME="My application name" ZEROTRUST_ENABLED=true ZEROTRUST_AZURE_NAME="Company AD one" ZEROTRUST_AZURE_TENANT_ID=<YOUR TENANT ID> ZEROTRUST_AZURE_CLIENT_ID=<YOUR CLIENT APPLICATION ID> ZEROTRUST_AZURE_SECRET=<YOUR SECRET FOR GRAPH API>
中间件
将中间件添加到所需的路由(s)/路由组。
Route::middleware('zero-trust')->get('/dashboard', function () { return view('dashboard'); })->name('dashboard');
自动登录
如果您想尝试自动登录用户,请在您的 .env 文件中设置 ZEROTRUST_AUTO_LOGIN=true。
这将针对您的用户模型中的 Microsoft 已登录用户进行查找,如果找到,则用户将被登录到您的应用程序。
用户模型和电子邮件列可以在配置文件中更改。
受限域
您可能有一个包含许多不同域的 Microsoft 活动目录,而对于您的特定应用程序,您想要对其进行限制。
假设您的 AD 具有以下域
- example.com
- foo.com
- bar.com
您想要 foo.com 和 bar.com 具有访问权限,但不允许 example.com。为此,只需将以下内容添加到您的 .env 文件中
ZEROTRUST_RESTRICTED_DOMAINS="foo.com,bar.com"
现在,当来自 example.com 的用户尝试登录时,他们将无法访问,并显示以下屏幕。
注销
当用户注销时,您还希望同时注销 Microsoft 账户。为此,用 route('zero-trust.logout') 替换您的 Laravel 注销方法中调用 route('logout') 的地方。
扩展中间件
如果您希望在用户认证或受限域尝试登录时执行其他操作,您可以从自己的中间件扩展中间件。
例如,也许您想使用 Spatie activity log 记录访问。
在这种情况下,创建一个新的中间件,扩展 ZeroTrust 中间件并重写 completed 方法。
ZeroTrustMiddleware.php
<?php namespace App\Http\Middleware; use Scolmore\ZeroTrust\ZeroTrust; class ZeroTrustMiddleware extends ZeroTrust { public function completed(bool $success, array $user): void { // TODO: Add your logging here. // $success = true if access was granted or false if the user was refused due to restrictions. // $user is an array of the user's details from the Microsoft graph API. } }
变更日志
有关最近更改的更多信息,请参阅 变更日志。
测试
composer test
安全
如果您发现任何安全相关的问题,请通过电子邮件 sam@scolmore.com 而不是使用问题跟踪器。
鸣谢
许可
MIT。有关更多信息,请参阅 许可文件。

