accentinteractive / laravel-sso
Laravel 的 Azure AD SSO (单一登录) 登录管理。
Requires
- php: ^7.3|^8.0
- illuminate/console: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/filesystem: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- thenetworg/oauth2-azure: ^2.2
Requires (Dev)
- orchestra/testbench: 4.*|5.*|6.*|^7.0|^8.0|^9.0
- phpunit/phpunit: ^10.0
README
安装
您可以通过 composer 安装此包
步骤 1
composer require accentinteractive/laravel-sso
步骤 2
使用 Azure 门户注册您的应用程序。您需要一个有效的 Microsoft 账户以及您公司的适当授权。有关完整手册,请参阅 注册新的 Azure AD 应用程序。
步骤 3
一旦您在 Azure AD 中注册了应用程序,请将适当的凭据添加到您的 .env 文件中。从 https://portal.azure.com/ 获取适当的 ID 和秘密。
SSO_ENABLED=true # App Registrations › Application › Application (client) ID SSO_CLIENT_ID="YOUR_CLIENT_ID_HERE" # App Registrations › Application › Directory (tenant) ID SSO_TENANT_ID="YOUR_TENANT_ID_HERE" # App Registrations › Application › Client credentials › New client secret SSO_CLIENT_SECRET="YOUR_CLIENT_SECRET_HERE" # App Registrations › Application › Redirect URIs (platform 'Web') SSO_CLIENT_REDIRECT_URL="https://YOURDOMAIN.COM/login" SSO_AUTH_TENANT=common
步骤 4
将中间件添加到您的 'web' 中间件组,将所有端点放在 SSO 后面,或者如果您只想保护几个端点,可以添加到另一个组中: \Accentinteractive\LaravelSso\Http\Middleware\AuthenticateSSO::class,
对于 Laravel >10,将其放在 bootstrap/app.php。
// [...] ->withMiddleware(function (Middleware $middleware) { // Register multitenancy middleware $middleware->appendToGroup('web', [ \Accentinteractive\LaravelSso\Http\Middleware\AuthenticateSSO::class, ]);
对于 Laravel <=10,将其放在 app/Http/Kernel.php。
'web' => [ // [...] \Accentinteractive\LaravelSso\Http\Middleware\AuthenticateSSO::class, ],
步骤 5
可选地,您可以使用以下命令发布配置文件:
php artisan vendor:publish --provider="Accentinteractive\LaravelSso\LaravelSsoServiceProvider" --tag="config"
注册新的 Azure AD 应用程序
为了使 Azure AD 单一登录正常工作,您必须在 .env 文件中提供以下 Azure AD 凭据
应用程序 (客户端) ID
目录 (租户) ID
客户端密钥
重定向 URI
重要:您的客户端密钥有一个过期日期。在密钥过期之前,请确保创建另一个新的密钥并将其提供到 .env 中,以便您的员工可以继续使用 SSO 登录。一个良好的过期时间可以是 12 或 24 个月。
- 要创建 Azure AD Plan Ahead 应用程序,ID 和秘密,请执行以下操作:
- 以您的组织 Microsoft 用户身份登录 Azure AD: https://portal.azure.com/。
- 转到应用程序注册 (https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade)。
- 点击 '新建注册' 以添加您的应用程序。
- 输入一个名称。
- 选择 '仅此组织目录中的帐户'。
- 点击 '注册'。
- 记下
应用程序 (客户端) ID
- 记下
目录 (租户) ID
- 点击 '重定向 URI'。
- 在 'Web' 下,点击 '添加 URI'。
- 输入正确的重定向 URI (https://YOURDOMAIN.COM/login) 并按 [ENTER]
- 记下重定向 URL。
- 回到应用程序注册并点击 '客户端凭据'。
- 点击 '新建客户端密钥'。
- 为密钥输入一个名称。
- 选择一个有效期(最长 24 个月)。
- 点击 '添加'。
- 记下客户端密钥的 '值'。重要:您只能创建一次密钥,并在创建后立即查看。
- 回到应用程序注册并转到管理 › 清单。
- 在 XML 中,将 "allowPublicClient" 编辑为 false。
- 在 XML 中,将 "oauth2AllowIdTokenImplicitFlow" 编辑为 true。
- 点击保存。
- 在密钥过期之前,请确保及时创建另一个新的密钥并将其输入到 .env 文件中,以便您可以使用 SSO 继续登录。
配置设置
您可以通过传递配置设置来修改行为。
您还可以直接传递选项。
测试
composer test
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全性
如果您发现任何安全相关的问题,请通过电子邮件joost@accentinteractive.nl联系,而不是使用问题跟踪器。
致谢
许可证
MIT 许可证(MIT)。请参阅许可证文件获取更多信息。