hakkahio / laravel-azure-ad-oauth-laravel-8

此包的最新版本(v1.3.0)没有提供许可信息。

为启用了Microsoft Azure Active Directory的应用程序提供单点登录功能。此包已更新以兼容Laravel 8,因为分支包与guzzle存在依赖问题。

v1.3.0 2021-10-12 13:35 UTC

This package is auto-updated.

Last update: 2024-09-12 20:14:32 UTC


README

安装

composer require hakkahio/laravel-azure-ad-oauth-laravel-8

如果您使用的是Laravel 5.5或更高版本,服务提供程序将由Laravel自动检测和安装。否则,您需要将服务提供程序和外观(可选)添加到 config/app.php 文件中

hakkahio\AzureSocialite\ServiceProvider::class,
// ...
'AzureUser' => hakkahio\AzureSocialite\AzureUserFacade::class,

发布配置并覆盖任何默认值

php artisan vendor publish

添加必要的环境变量

AZURE_AD_CLIENT_ID=XXXX
AZURE_AD_CLIENT_SECRET=XXXX

您需要更改应用程序的以下更改

  • 您需要将用户表中的密码字段设置为可空。
  • 您需要在用户表中添加一个 VARCHAR 字段,长度为36个字符,用于存储用户的Azure AD ID。字段的默认名称为 azure_id,但可以在配置文件中更改: 'user_id_field' => 'azure_id',

用法

要使用Azure AD SSO,只需将用户指向(可配置的)/login/microsoft 路由进行登录。用户登录后,将被重定向到主页(也可配置)。

登录后,您可以像平常一样访问Laravel的基本认证用户

auth()->user();

如果您需要在用户登录时创建用户模型时设置额外的用户字段,您可以通过 UserFactory::userCallback() 方法提供一个回调。这样做的好地方是您的 AppServiceProvider 的 boot 方法

\hakkahio\AzureSocialite\UserFactory::userCallback(function($new_user){
	$new_user->api_token = str_random(60);
});

Azure AD 设置

  1. 导航到 Azure Active Directory -> 应用注册

  2. 创建一个新应用程序

  3. 选择一个名称

  4. 选择 "Web 应用程序 / API" 应用程序类型

  5. 添加 "登录 URL"。这通常是 https://domain.com/auth/login

  6. 点击 "创建"

  7. 点击刚创建的应用。

  8. "应用程序 ID" 是您需要的 AZURE_AD_CLIENT_ID 环境变量的值。

  9. 点击 "回复 URL"。您需要在此处为应用程序白名单重定向路径。这通常是 https://domain.com/login/microsoft/callback。点击 "保存"。

  10. 在 "所需权限" 选项卡中,选择应用程序所需的权限。

  11. 在清单中添加任何必要的角色

  12. 点击 "Manifest" 选项卡。

  13. 使用以下格式添加必要的角色

      "appRoles": [
          {
            "allowedMemberTypes": [
              "User"
            ],
            "displayName": "Manager Role",
            "id": "08b0e9e3-8d88-4d99-b630-b9642a70f51e",// Any unique GUID
            "isEnabled": true,
            "description": "Manage stuff with this role",
            "value": "manager"
          }
        ],
    
  14. 点击 "保存"

  15. 在 "密钥" 选项卡中,输入一个描述(例如 "应用程序密钥")。设置持续时间到 "永不过期"。点击 "保存"。复制整个密钥。此密钥不会再次显示。您需要此值用于 AZURE_AD_CLIENT_SECRET 环境变量。

  16. 点击 "托管应用程序" 链接(它将是应用程序的名称);

  17. 在 "属性" 选项卡下,启用用户登录。强制用户分配。点击 "保存"。

  18. 在 "用户和组" 选项卡下,根据需要添加用户及其角色。