mikielis / laravel-azure-ad-oauth-laravel
为启用Microsoft Azure Active Directory的应用程序提供单点登录能力。此包已更新以与Laravel 8兼容,因为分支包与guzzle存在依赖问题。
Requires
- guzzlehttp/guzzle: ^7.0.1
- laravel/framework: >5.4
- laravel/socialite: >3.0
README
安装
composer require mikielis/laravel-azure-ad-oauth-laravel
如果您使用的是Laravel 5.5或更高版本,服务提供程序将由Laravel自动检测和安装。否则,您需要将服务提供程序和外观(可选)添加到 config/app.php
文件中
mikielis\AzureSocialite\ServiceProvider::class,
// ...
'AzureUser' => mikielis\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
方法中。
\mikielis\AzureSocialite\UserFactory::userCallback(function($new_user){
$new_user->api_token = str_random(60);
});
Azure AD 设置
-
导航到
Azure Active Directory
->应用注册
。 -
创建一个新应用
-
选择一个名称
-
选择“Web应用/ API”应用类型
-
添加“登录URL”。这通常是
https://domain.com/auth/login
-
点击“创建”
-
点击新创建的应用。
-
“应用程序ID”是您需要用于
AZURE_AD_CLIENT_ID
环境变量的。 -
点击“回复URL”。您需要在这里为您的应用程序白名单重定向路径。这通常是
https://domain.com/login/microsoft/callback
。点击“保存” -
在“所需权限”选项卡中选择您应用程序所需的权限。
-
将任何必要的角色添加到清单中
-
点击“清单”选项卡。
-
使用以下格式添加必要的角色
"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" } ],
-
点击“保存”
-
在“密钥”选项卡中,输入一个描述(例如“应用密钥”)。设置持续时间为“永不失效”。点击“保存”。复制整个密钥。这不会再次显示。您需要此值用于
AZURE_AD_CLIENT_SECRET
环境变量。 -
点击“托管应用程序”链接(它将是应用程序的名称);
-
在“属性”选项卡下,启用用户登录。强制用户分配。点击“保存”。
-
在“用户和组”选项卡下,根据需要添加用户及其角色。