#13 使用 OneLogin 设置 SAML

概述

本节提供使用 SAML 2.0 身份验证从 OneLogin 配置单点登录和 Zabbix 用户配置的指南。

OneLogin 配置

创建应用程序

1. 登录 OneLogin 上的帐户。出于测试目的,您可以在 OneLogin 中创建一个免费的开发者帐户。

2. 在 OneLogin Web 界面中导航至 应用程序 → 应用程序

3. 单击“添加应用程序”并搜索适当的应用程序。本页中的指南基于 SCIM Provisioner with SAML (SCIM v2 Enterprise, full SAML) 应用程序示例。

4. 首先,您可能想要自定义应用程序的显示名称。您可能还想添加图标和应用程序详细信息。之后,单击 保存

设置 SSO/SCIM 配置

1. 在 配置 -> 应用程序详细信息 中,将 Zabbix 单点登录端点 http://<zabbix-instance-url>/zabbix/index_sso.php?acs 设置为以下字段的值:

  • ACS(消费者)URL 验证器

  • ACS(消费者)URL

请注意使用“http”,而不是“https”,这样 acs 参数就不会在请求中被截断。

也可以使用“https”。为了使其与 Zabbix 配合使用,需要在 conf/zabbix.conf.php 中添加以下行:

$SSO['SETTINGS'] = ['use_proxy_headers' => true];

其他选项保留其默认值。

2.在 配置 -> API 连接 中,设置以下值:

  • SCIM 基本 URLhttps://<zabbix-instance-url>/zabbix/api_scim.php
  • SCIM JSON 模板:应包含您想要通过 SCIM 传递给 Zabbix 的所有自定义属性,例如 user_nameuser_lastnameuser_emailuser_mobile
{
       "schemas": [
       "urn:ietf:params:scim:schemas:core:2.0:User"
       ],
       "userName": "{$parameters.scimusername}",
       "name": {
       "familyName": "{$user.lastname}",
       "givenName": "{$user.firstname}"
       },
       "user_name": "{$user.firstname}",
       "user_lastname": "{$user.lastname}",
       "user_mobile": "{$user.phone}",
       "user_email": "{$user.email}"
       }

属性名称是任意的。可以使用不同的属性名称,但是,它们必须与 Zabbix SAML 设置中的相应字段值匹配。

请注意,为了使用户配置正常工作,OneLogin 需要响应一个带有“givenName”和“familyName”的“name”属性,即使服务提供商不需要它。因此,有必要在应用程序配置部分的架构中指定这一点。

  • SCIM Bearer Token:输入具有超级管理员权限的 Zabbix API 令牌。

单击 Enable 以激活连接。

3.在“Provisioning”页面中,启用“Provisioning”选项:

4. “Parameters”页面包含默认参数列表:

  • 确保“scimusername”与 OneLogin 中的用户登录值匹配(例如电子邮件);
  • 为“Groups”参数标记“Include in User Provisioning”选项;
  • 单击“+”以创建 SAML 断言和用户配置所需的自定义参数,例如 user_nameuser_lastnameuser_emailuser_mobile

添加参数时,请确保标记 包含在 SAML 断言中包含在用户配置中 选项。

  • 添加与 OneLogin 中的用户角色匹配的“组”参数。用户角色将作为字符串传递,以分号“;”分隔。 OneLogin 用户角色将用于在 Zabbix 中创建用户组:

验证参数列表:

5. 在 Rules 页面中,创建到默认 Groups 参数的用户角色映射。

您可以使用正则表达式将特定角色作为组传递。角色名称不应包含 ;,因为 OneLogin 在发送具有多个角色的属性时会将其用作分隔符。

Zabbix 配置

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

Zabbix 字段 OneLogin 中的设置字段 示例值
IdP 实体 ID 颁发者 URL
(请参阅 OneLogin 中应用程序的 SSO 选项卡)
SSO 服务 URL SAML 2.0 端点 (HTTP)
(请参阅 OneLogin 中应用程序的 SSO 选项卡)
SLO 服务 URL SLO 端点 (HTTP)
(请参阅 OneLogin 中应用程序的 SSO 选项卡)
用户名属性 自定义参数 user_email
组名属性 自定义参数 group
用户名属性 自定义参数 user_name
用户姓氏属性 自定义参数 user_lastname

还需要配置用户组映射。媒体映射是可选的。单击 更新 以保存这些设置。

2. 下载 OneLogin 提供的证书并将其放入 Zabbix 前端安装的 conf/certs 中,作为 idp.crt。

通过运行以下命令为其设置 644 权限:

chmod 644 idp.crt

您可以在 OneLogin 中的 应用程序 -> SSO -> 单击当前证书下的 查看详细信息 中访问证书下载。

可以使用不同的证书名称和位置。在这种情况下,请确保在 conf/zabbix.conf.php 中添加以下行:

$SSO['IDP_CERT'] = 'path/to/certname.crt';

SCIM 用户配置

启用用户配置后,现在可以在 OneLogin 中添加/更新用户及其角色,并立即将其配置到 Zabbix。

例如,您可以创建一个新用户:

将其添加到用户角色和将配置该用户的应用程序:

保存用户时,它将被配置到 Zabbix。在应用程序 -> 用户中,您可以检查当前应用程序用户的配置状态:

如果配置成功,则可以在 Zabbix 用户列表中看到该用户。