accentinteractive/laravel-sso

Laravel 的 Azure AD SSO (单一登录) 登录管理。

v1.0.3 2024-08-07 14:08 UTC

This package is auto-updated.

Last update: 2024-09-07 14:21:14 UTC


README

Latest Version on Packagist Build Status Quality Score Total Downloads

安装

您可以通过 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'。
    • 回到应用程序注册并点击 '客户端凭据'。
      • 点击 '新建客户端密钥'。
      • 为密钥输入一个名称。
      • 选择一个有效期(最长 24 个月)。
      • 点击 '添加'。
      • 记下客户端密钥的 '值'。重要:您只能创建一次密钥,并在创建后立即查看。
    • 回到应用程序注册并转到管理 › 清单。
      • 在 XML 中,将 "allowPublicClient" 编辑为 false。
      • 在 XML 中,将 "oauth2AllowIdTokenImplicitFlow" 编辑为 true。
      • 点击保存。
    • 在密钥过期之前,请确保及时创建另一个新的密钥并将其输入到 .env 文件中,以便您可以使用 SSO 继续登录。

配置设置

您可以通过传递配置设置来修改行为。

您还可以直接传递选项。

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全性

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

致谢

许可证

MIT 许可证(MIT)。请参阅许可证文件获取更多信息。