litan1106/laravel-azure-ad-oauth

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

A 提供对启用Microsoft Azure Active Directory的单点登录功能。(带有一些自定义的分支。)

该包的规范存储库似乎已丢失,因此该包已被冻结。

v1.3.0 2020-01-23 17:29 UTC

This package is not auto-updated.

Last update: 2024-03-20 11:03:27 UTC


README

安装

composer require litan1106/laravel-azure-ad-oauth

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

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

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

php artisan vendor:publish

添加必要的环境变量

AZURE_AD_CLIENT_ID=XXXX
AZURE_AD_CLIENT_SECRET=XXXX

您需要修改应用程序的仅有的更改是

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

使用方法

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

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

auth()->user();

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

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

如果您需要将角色附加到用户,您可以创建对AzureUserWasCreatedEventAzureUserWasUpdatedEvent的监听器。

Azure AD 设置

  1. 导航到Azure Active Directory -> App registrations

  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. 在“必需权限”选项卡中选择您应用程序所需的权限。

    您可以从Directory.Read.All权限获取用户声明/组

    1. 点击“添加权限”
    2. 点击“Microsoft APIs 选项卡”
    3. 点击“Microsoft Graph”
    4. 点击“委托权限”
    5. 选择Directory -> Directory.Read.All
    6. 点击“添加权限”以保存更改。
  11. 在清单中添加任何必要的角色

  12. 点击“清单”选项卡。

  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"
      	}
      ],
      "groupMembershipClaims": "All", // for the `Directory.Read.All`
    
  14. 点击“保存”

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

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

  17. 在“属性”选项卡下,启用用户登录。使用户分配成为必需。点击“保存”。

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