使用 OneLogin 进行 SAML 设置

概述

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

OneLogin 配置

创建应用

1. 登录到您的 OneLogin 账户。 为了进行测试,您可以在 OneLogin 中创建一个免费的开发者账户。

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 配合使用,请将以下行添加到前端配置文件zabbix.conf.php)中:

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

其他选项保留默认值。

2. 在 Configuration > API connection 中,设置以下值:

  • SCIM Base URLhttps://<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 需要在响应中接收包含 givenNamefamilyNamename 属性,即使服务提供商未要求该属性。 因此,必须在应用程序配置部分的架构中指定该属性。

  • SCIM Bearer Token:输入具有 Super admin 权限的 Zabbix API token。

单击 Enable 以激活连接。

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

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

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

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

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

验证参数列表:

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

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

6. 下载 IdP 证书。 运行以下命令将其权限设置为 644:

chmod 644 idp.crt

Zabbix 配置

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

Zabbix 字段 OneLogin 中的设置字段 示例值
IdP 实体 ID Issuer URL
(请参见 OneLogin 中应用的 SSO 选项卡)
SSO 服务 URL SAML 2.0 Endpoint (HTTP)
(请参见 OneLogin 中应用的 SSO 选项卡)
SLO 服务 URL SLO Endpoint (HTTP)
(请参见 OneLogin 中应用的 SSO 选项卡)
用户名属性 Custom parameter user_email
组名称属性 Custom parameter group
用户名字属性 Custom parameter user_name
用户姓氏属性 Custom parameter user_lastname

此外,还必须配置用户组映射。 媒体映射为可选配置。 点击 更新 以保存这些设置。

2. 添加 OneLogin 提供的 Base64 证书。

如果在前端配置文件zabbix.conf.php)中设置了 $SSO['CERT_STORAGE'] = 'database',则可以在 SAML 配置期间将证书文本粘贴到前端,或上传证书文件,文件系统中无需存储任何文件。

如果在配置文件中设置了 $SSO['CERT_STORAGE'] = 'file',则必须使证书在文件系统中可用(默认位于 ui/conf/certs,或位于配置文件中配置的路径),并且前端不会将证书存储在数据库中。 请注意,如果未设置 $SSO['CERT_STORAGE'] 或该设置已被注释掉,则默认使用文件存储,并从 ui/conf/certs 读取证书。

在 OneLogin 中,您可以通过 Applications > SSO > 在当前证书下点击 View details 来访问证书下载。

3. 点击 更新 按钮以保存这些设置。

SCIM 用户预配

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

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

将其添加到用户角色以及将为该用户执行预配的应用程序中:

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

如果预配成功,该用户将显示在 Zabbix 用户列表中。