13 使用 OneLogin 配置 SAML

概述

本节提供有关通过使用 SAML 20 身份验证,从 OneLogin 配置单点登录和向 Zabbix 进行用户配置的指南。

OneLogin 配置

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

  2. 在 OneLogin 网络界面中,导航至 Applications → Applications

  3. 点击 "Add App" 并搜索相应的应用程序。本页面中的指南基于 SCIM Provisioner with SAML (SCIM v2 Enterprise, full SAML) 应用程序示例。

  4. 首先,您可能需要自定义应用程序的显示名称。您还可以添加图标和应用程序详细信息。完成后,点击 Save

配置 SSO/SCIM 预配
  1. Configuration -> Application details 中,将 Zabbix 单点登录端点 http://<zabbix-instance-url>/zabbix/index_sso.php?acs 设置为以下字段的值:
  • ACS (Consumer) URL Validator
  • ACS (Consumer) URL

请注意使用 "http" 而不是 "https",以便请求中不会截断 acs 参数。

也可以使用 "https"。要使 Zabbix 支持该方式,需要在 conf/zabbix.conf.php 中添加以下行:

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

其他选项保留默认值。

  1. Configuration -> API connection 中,设置以下值:
  • SCIM Base URL: https://<zabbix-instance-url>/zabbix/api_scim.php
  • SCIM JSON Template:应包含所有希望通过 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' 的 '名称' 属性,即使服务提供商未要求该属性。因此,需要在应用程序配置部分的模式中指定此内容。

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

点击 Enable 激活连接。

  1. Provisioning 页面中,启用 Provisioning 选项:

  1. Parameters 页面包含默认参数列表:
  • 确保 'scimusername' 与 OneLogin 中的用户 login 值匹配(例如 email);
  • 标记 'Groups' 参数的 Include in User Provisioning 选项;
  • 点击 "+" 以 create SAML 断言和用户配置所需的自定义参数,例如 user_nameuser_lastnameuser_emailuser_mobile

添加参数时,请确保同时标记 Include in SAML assertionInclude in User Provisioning 选项。

  • 添加一个与 OneLogin 中用户角色匹配的 'group' 参数。用户角色将作为 string 传递,使用分号 ; 分隔。OneLogin 中的用户角色将用于在 Zabbix 中创建用户组:

验证参数列表:

  1. Rules 页面中,create 用户角色映射到默认 Groups 参数。

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

Zabbix配置

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

Zabbix 字段 OneLogin 中的设置字段 示例值
IdP entity ID Issuer URL
(see SSO tab of your application in OneLogin)
SSO service URL SAML 2. 0 Endpoint (HTTP)
(see SSO tab of your application in OneLogin)
SLO service URL SLO Endpoint (HTTP)
(see SSO tab of your application in OneLogin)
Username attribute Custom parameter user_email
Group name attribute Custom parameter group
User name attribute Custom parameter user_name
User last name attribute Custom parameter user_lastname

还需要配置用户组映射。媒体映射是可选的。点击 Update 保存这些设置。

  1. 下载 OneLogin 提供的证书,并将其放置在 Zabbix 前端安装的 conf/certs 目录下,命名为 idp.crt。

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

chmod 644 idp.crt

您可以在 OneLogin 中访问证书下载页面:Applications -> SSO -> 在当前证书下点击 View details

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

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

SCIM用户配置

启用用户调配功能后,现在可以在 OneLogin 中添加/update 用户及其角色,并立即将其调配到 Zabbix。

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

将其添加到用户角色和用于调配用户的程序中:

保存用户时,系统会将该用户调配到 Zabbix。在 应用程序 -> 用户 中,您可以查看当前应用程序用户的调配状态:

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