11 使用Microsoft Entra ID配置SAML
概述
本节提供从 Microsoft Entra ID(以前称为 Microsoft Azure Active Directory)使用 SAML 2.0 身份验证配置单点登录和用户调配到 Zabbix 的指南。
Microsoft Entra ID配置
创建应用
1.登录到 Microsoft Entra 管理中心,网址为 Microsoft Entra ID。出于测试目的,您可以在 Microsoft Entra ID 中 create 一个免费试用账户。
2.在 Microsoft Entra 管理中心中选择 Applications(应用程序)-> Enterprise applications(企业应用程序)-> New application(新建应用程序)-> Create your own application(创建自己的应用程序)。
3.添加您的应用程序名称,并选择 Integrate any other application...(集成其他应用程序...)选项。然后,点击 Create(创建)。

配置单点登录
1. 在你的应用页面中,转到 Set up single sign on 并点击 Get started。然后选择 SAML。
2. 编辑 Basic SAML Configuration:
- 在 Identifier (Entity ID) 中设置一个唯一名称,用于向 Microsoft Entra ID 标识你的应用,例如
zabbix; - 在 Reply URL (Assertion Consumer Service URL) 中设置 Zabbix 单点登录端点:
https://<path-to-zabbix-ui>/index_sso.php?acs:

请注意,必须使用 "https"。要使其与 Zabbix 正常工作,需要在 conf/zabbix.conf.php 中添加以下行:
$SSO['SETTINGS'] = ['use_proxy_headers' => true];
3. 编辑 Attributes & Claims。你必须添加所有要传递给 Zabbix 的属性(user_name、user_lastname、user_email、user_mobile、groups)。
属性名称可以自定义。可以使用不同的属性名称,但它们必须与 Zabbix SAML 设置中相应字段的值匹配。
- 点击 Add new claim 以添加一个属性:

- 点击 Add a group claim 以添加一个用于将组传递给 Zabbix 的属性:

在此声明中非常重要的一点是,所选的 Source attribute 必须将组名称(而不是组 ID)传递给 Zabbix。否则,JIT 用户预配将无法正常工作。
4. 在 SAML Certificates 中下载 Entra ID 提供的 Base64 证书,并将其放入 Zabbix 前端安装目录的 conf/certs 中(具体位置可能因你的 Zabbix 安装的操作系统/源码而异)。
通过运行以下命令将其权限设置为 644:
chmod 644 entra.cer
确保 conf/zabbix.conf.php 包含以下行:
$SSO['IDP_CERT'] = 'conf/certs/entra.cer';
5. 使用 Entra ID 中 Set up <your app name> 的值来配置 Zabbix SAML 身份验证(见下一节):

Zabbix 配置
1. 在 Zabbix 中,转到 SAML 设置,并根据 Entra ID 配置填写配置选项:

| Zabbix 字段 | Entra ID 中的设置字段 | 示例值 |
|---|---|---|
| IdP entity ID | Microsoft Entra 标识符 | |
| SSO service URL | 登录 URL | |
| SLO service URL | 注销 URL | |
| SP entity ID | 标识符(Entity ID) | |
| Username attribute | 自定义属性(声明) | user_email |
| Group name attribute | 自定义属性(声明) | groups |
| User name attribute | 自定义属性(声明) | user_name |
| User last name attribute | 自定义属性(声明) | user_lastname |
还需要配置用户组映射。媒体映射为可选项。
点击 Update 保存这些设置。
SCIM用户配置
- 在你的 Entra ID 应用程序页面,从主菜单打开“Provisioning”页面。点击 Get started,然后选择“Automatic provisioning”模式:
- 在 Tenant URL 中,设置以下值:
https://<path-to-zabbix-ui>/api_scim.php - 在 Secret token 中,输入一个具有 Super admin 权限的 Zabbix API token。
- 点击 Test connection 以查看连接是否建立。

- 现在你可以添加所有将通过 SCIM 传递给 Zabbix 的属性。为此,点击 Mappings,然后点击 Provision Microsoft Entra ID Users。

在属性映射列表底部,启用 Show advanced options,然后点击 Edit attribute list for customappsso。
在属性列表底部,添加你自己的类型为 'string' 的属性:

保存列表。
- 现在你可以为已添加的属性添加映射。在属性映射列表底部,点击 Add New Mapping,并按如下所示create映射:

当所有映射添加完成后,保存映射列表。

- 作为将用户配置到 Zabbix 的前提条件,你必须在 Entra ID 中配置用户和组。
为此,请进入 Microsoft Entra admin center,然后在相应的 Users 和 Groups 页面中添加用户/组。
-
当用户和组在 Entra AD 中创建完成后,你可以进入应用程序的 Users and groups 菜单,并将它们添加到应用程序中。
-
进入应用程序的 Provisioning 菜单,点击 Start provisioning,以将用户配置到 Zabbix。
请注意,Entra ID 中的 Users PATCH 请求不支持媒体(media)的更改。
认证请求签名
可以将 Entra ID 配置为 validate the signature 已签名的身份验证请求的证书。
要实现此功能,需要使用 create 公钥/私钥:
openssl req -x509 -newkey rsa:4096 -keyout /usr/share/zabbix/conf/certs/request-sign.key -out /usr/share/zabbix/conf/certs/request-sign.pem -sha256 -days 1825 -nodes
分配权限:
chown apache /usr/share/zabbix/conf/certs/request-sign.key
chmod 400 /usr/share/zabbix/conf/certs/request-sign.key
通过添加以下内容来更新 Zabbix 前端配置:
$SSO['SP_KEY'] = 'conf/certs/request-sign.key';
$SSO['SP_CERT'] = 'conf/certs/request-sign.crt';
故障排除
当用户已通过Microsoft Edge浏览器个人资料登录时,尝试通过SAMLlogin到Zabbix时可能出现认证问题。作为此类问题的迹象,用户可能能够通过Microsoft Edge隐私模式成功登录Zabbix。
为避免此类情况下的认证问题,可能需要在Zabbix前端配置file文件(zabbix.conf.php)中将requestedAuthnContext设置为"false"。
$SSO['SETTINGS'] = [
'security' => [
'requestedAuthnContext' => false
]
];