
本文旨在指导您如何在azure ad中用户被删除时,向您的外部系统(如php应用)发送实时通知。我们将重点探讨两种主要方法:利用microsoft graph api的变更通知(webhooks)实现即时同步,以及理解azure ad标准用户去预配(de-provisioning)的工作机制及其对删除操作的响应时机。通过这两种策略,您可以确保外部系统中的用户状态与azure ad保持一致,从而实现更完善的用户生命周期管理。
在现代应用集成中,尤其当外部系统(如基于SAML协议集成的PHP应用)依赖Azure Active Directory (AD) 进行用户身份管理时,确保用户生命周期事件(如用户删除)在两个系统间同步至关重要。本文将详细介绍如何配置Azure AD,以便在用户从应用中被删除时,能够及时通知您的服务器进行相应的处理。
Microsoft Graph API 提供了强大的Webhooks机制,允许您的应用订阅Azure AD中特定资源(如用户)的变更通知。当用户数据发生添加、修改或删除时,Graph API会向您配置的回调URL发送通知。这是实现用户删除实时同步的首选方法。
注册应用并获取权限:
创建订阅请求: 您的应用需要向Microsoft Graph API发送一个POST请求以创建订阅。
POST https://graph.microsoft.com/v1.0/subscriptions
Content-Type: application/json
{
"changeType": "deleted",
"notificationUrl": "https://your-server.com/api/graph-webhook-receiver",
"resource": "/users",
"expirationDateTime": "2024-03-01T18:23:45.9356913Z",
"clientState": "secretClientValue"
}实现通知接收端点: 在您的服务器上实现 https://your-server.com/api/graph-webhook-receiver 端点。
<?php
// 示例PHP代码片段 (伪代码)
// 1. 验证订阅
if (isset($_GET['validationToken'])) {
header('Content-Type: text/plain');
echo $_GET['validationToken'];
exit;
}
// 2. 处理实际的变更通知
$requestBody = file_get_contents('php://input');
$notifications = json_decode($requestBody, true);
foreach ($notifications['value'] as $notification) {
if ($notification['changeType'] === 'deleted' && $notification['resource'] === 'users') {
$userId = $notification['resourceData']['id']; // 获取被删除用户的ID
// 验证 clientState 以确保通知来自 Graph API
if ($notification['clientState'] === 'secretClientValue') {
// 执行您的用户删除逻辑
// 例如:从数据库中删除用户
log_message("User {$userId} deleted from Azure AD. Deleting from local system.");
// deleteUserFromLocalSystem($userId);
} else {
log_message("Invalid clientState for notification. Possible spoofing attempt.");
}
}
}
http_response_code(202); // 接受通知
?>Azure AD的去预配服务旨在将用户生命周期事件同步到已连接的SaaS应用。然而,对于用户删除事件,其行为模式需要特别理解。
根据Microsoft文档,Azure AD中的用户删除分为两个阶段:
用户最初的问题在于,他们希望在管理员“删除用户”时(通常指软删除)立即收到通知。然而,标准的Azure AD去预配服务通常只在用户被 永久删除 时才发送DELETE请求到目标应用。这意味着如果仅依赖标准去预配,您的系统可能不会在用户被软删除时立即收到通知,而是在30天后或管理员手动永久删除后才收到。
因此,如果您的需求是在用户被管理员软删除时立即触发同步操作(例如,立即将用户从您的PHP系统中注销并删除),那么Microsoft Graph API的变更通知是更合适的解决方案,因为它能捕获到 deleted 状态的即时变更,而不仅仅是永久删除。
为了在Azure AD用户被删除时,向您的外部系统发送请求并同步用户状态,强烈推荐使用Microsoft Graph API的变更通知(Webhooks)。这种方法提供了实时的、细粒度的控制,允许您在用户被软删除时即时响应。虽然Azure AD的去预配服务也能处理用户删除,但其DELETE请求通常在用户被永久删除时才触发,可能无法满足对即时同步的需求。结合使用Graph API Webhooks和对去预配机制的理解,可以构建一个健壮且响应迅速的用户生命周期管理系统。
以上就是如何在Azure AD用户删除时向外部系统发送通知的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号