12 使用 Okta 的 SAML 设置
本节提供配置指南,用于为 Zabbix 启用 SAML 2.0 身份验证和用户供应的 Okta。
Okta 配置
-
转到 https://developer.okta.com/signup/ 并注册/登录您的账户。
-
在 Okta 网络界面中,导航至 Applications → Applications。
-
点击 Create App Integration。

选择 "SAML 2. 0" 作为登录方法,然后点击 Next。
-
在常规设置中,填写应用程序名称,然后点击 Next。
-
在 SAML 配置中,输入以下提供的值,然后点击 Next。

-
在 General 中添加:
- Single sign-on URL:
http://<your-zabbix-url>/zabbix/index_sso.php?acs
注意使用 "http" 而不是 "https",以便请求中不会截断acs参数。还应勾选 Use this for Recipient URL and Destination URL 复选框。 - Audience URI (SP Entity ID):
zabbix
注意,此值将在 SAML 断言中用作唯一的服务提供商标识符(如果不匹配,操作将被拒绝)。此字段中可以指定 URL 或任意 string 数据。 - Default RelayState:
留空此字段;如果需要自定义重定向,可以在 Zabbix 的 Users → Users 设置中添加。 - 根据您的偏好填写其他字段。
- Single sign-on URL:
-
在 Attribute Statements/Group Attribute Statements 中添加:
{width="600"}
这些属性声明将插入到与 Zabbix 共享的 SAML 断言中。
此处使用的属性名称是任意示例。您可以使用不同的属性名称,但必须确保它们与 Zabbix SAML 设置中的相应字段值匹配。
如果您希望在不使用 JIT 用户配置的情况下配置通过 SAML 登录 Zabbix,则只需要电子邮件属性。
如果计划使用加密连接,请 generate 私有和公共加密证书,然后将公共证书上传到 Okta。当 Assertion Encryption 设置为 "Encrypted" 时,会出现证书上传表单(点击 Show Advanced Settings 以找到此参数)。
-
在下一个标签页中,选择 "I'm a software vendor. I'd like to integrate my app with Okta",然后点击 "Finish"。
-
导航到新创建应用程序的 "Assignments" 标签页,点击 Assign 按钮,然后从下拉菜单中选择 "Assign to People"。

-
在弹出窗口中,将应用程序分配给将使用 SAML 2. 0 认证访问 Zabbix 的用户,然后点击 Save and go back。
-
导航到 "Sign On" 标签页,点击 View Setup Instructions 按钮。
配置说明 将在新标签页中打开;在配置 Zabbix 时请保持此标签页打开。
Zabbix配置
- 在 Zabbix 中,转到 设置zabbix
并根据 Okta 上的设置说明填写配置选项:

| Zabbix 字段 | Okta 中的设置字段 | 示例值 |
|---|---|---|
| IdP entity ID | Identity Provider Issuer | |
| SSO service URL | Identity Provider Single Sign-On URL | |
| Username attribute | Attribute name | usrEmail |
| SP entity ID | Audience URI | zabbix |
| Group name attribute | Attribute name | groups |
| User name attribute | Attribute name | user_name |
| User last name attribute | Attribute name | user_lastname |
还需要配置用户组和媒介类型映射。
- 将 Okta SAML 设置说明中提供的证书下载到 ui/conf/certs 文件夹,并命名为 idp.crt。
运行以下命令设置权限为 644:
chmod 644 idp.crt
-
如果在 Okta 中将 Assertion Encryption 设置为“Encrypted”,则在 Zabbix 中也应勾选 Encrypt 参数的“Assertions”复选框。
-
点击“Update”按钮以保存这些设置。
SCIM配置
- 要在 Okta 中启用 SCIM 配置,请进入应用程序的 "General" -> "App Settings" 页面。
勾选 Enable SCIM provisioning 复选框。结果是一个新的 Provisioning 标签页会出现。
- 转到 "Provisioning" 标签页以设置 SCIM 连接:
- 在 SCIM connector base URL 中指定 Zabbix 前端的路径,并附加
api_scim.php,例如:
https://<your-zabbix-url>/zabbix/api_scim.php - Unique identifier field for users(用户的唯一标识字段):
email - Authentication mode(认证模式):
HTTP header - 在 Authorization(授权)中输入一个具有超级管理员权限的有效 API 令牌

如果遇到认证问题 问题,请参见 授权头转发。
-
点击 Test Connector Configuration 以测试连接。如果一切正常,将显示一条成功消息。
-
在 "Provisioning" -> "To App" 中,确保勾选以下复选框:
- 创建用户
- 更新用户属性
- 停用用户
这将确保这些请求类型会被发送到 Zabbix。
- 确保在 SAML 中定义的所有属性也在 SCIM 中定义。您可以通过点击 Go to Profile Editor 访问应用程序的 profile 编辑器,路径为 "Provisioning" -> "To App"。
点击 Add Attribute。填写 Display name、Variable name、External name 的值,使用 SAML 属性名称,例如:user_name。

External namespace(外部命名空间)应与用户模式相同:urn:ietf:params:scim:schemas:core:2. 0:User
-
转到应用程序的 "Provisioning" -> "To App" -> "Attribute Mappings"。点击底部的 Show Unmapped Attributes。新添加的属性将出现。
-
映射每个添加的属性。

-
在 "Assignments" 标签页中添加用户。这些用户之前需要在 Directory -> People 中添加。所有这些分配将作为请求发送到 Zabbix。
-
在 "Push Groups" 标签页中添加组。Zabbix SAML 设置中的用户组映射模式必须与此处指定的组匹配。如果没有匹配项,则无法在 Zabbix 中创建用户。
每次发生更改时都会发送有关组成员的信息。