使用 OneLogin 配置 13 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];

其他选项保留默认值。

2。在 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 激活连接。

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

4。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 中创建用户组:

验证参数列表:

5。在 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 保存这些设置。

2。下载 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 用户列表中看到该用户。