跳到主内容

Zabbix

Zabbix 作为 SAML 服务提供商(SP),Casdoor 作为身份提供商(IdP)。两者通过 SAML 2.0 实现单点登录(SSO)进入 Zabbix。

第 1 步:部署 Casdoor 和 Zabbix​

部署 Casdoor 和 Zabbix。确认两者都在运行,并且都能登录。

第 2 步:添加证书​

为了保证通信安全,需要在 Zabbix 和 Casdoor 之间配置证书。除非在 zabbix.conf.php 中指定了自定义路径,私钥和证书 应放在 /etc/zabbix/conf/certs/ 目录下。

默认情况下,zabbix - web - nginx - mysql Docker 容器会查找以下位置:

  • /etc/zabbix/conf/certs/sp.key:SP 私钥文件
  • /etc/zabbix/conf/certs/sp.crt:SP 证书文件
  • /etc/zabbix/conf/certs/idp.crt:IdP 证书文件

在 Casdoor 中创建证书:登录 Casdoor 管理界面,按系统提示创建两个证书。这两个证书用于加密 Zabbix 与 Casdoor 之间的通信。

创建证书

复制证书和私钥:把证书和私钥复制到 /etc/zabbix/conf/certs。如果用 Docker,把本地证书文件挂载到容器中。

第 3 步:配置 Zabbix​

在 Zabbix 中配置 SAML 需要填写三个必填字段:Single Sign - On、Issuer 和 Public Certificate。

登录 Zabbix 管理界面,点击 User -> authentication -> SAML settings。

Zabbix 配置

按 Casdoor 配置中的 SAML 元数据配置 Zabbix:

  • idP entity ID(Issuer):对应 entityID="http://localhost:8000"。这个值是 Casdoor 的 entity ID,Zabbix 会据此与 Casdoor 通信。
  • SSO service URL:对应 Location="http://localhost:8000/api/saml/redirect/admin/zabbix"。这是 Casdoor 提供的 SSO 服务地址。用户在 Zabbix 中发起 SSO 请求时,会被跳转到这个地址认证。
  • username attribute:登录 Zabbix 时用作用户名的 SAML 属性。这里用的是 Name,表示 Zabbix 会把 SAML 断言中的 Name 属性作为用户的登录名。
  • SP entity ID:SP 的唯一 ID,可以随意设置。这个 ID 用来标识 Zabbix 服务提供商,需要与 Casdoor 中的配置一致。

第 4 步:配置 Casdoor​

需要在 Casdoor 中做一些必要的配置,保证与 Zabbix 的集成正常工作。

编辑名称和 Logo:登录 Casdoor 管理界面,找到相应设置,编辑应用的名称和 Logo,让用户看到的界面更友好。

应用信息

选择证书:在 Casdoor 中选择 zabbix_idp 作为签名和加密 SAML 消息的证书,保证通信安全。

选择证书

Redirect URL:填写用来标识你的 SP(Zabbix)的值。在 Zabbix 中它可能叫 Audience 或 Entity ID。它必须与 Zabbix 中的 SP entity ID 一致,否则 SSO 会失败。

Redirect URL

Reply URL:填写用于校验 SAML 响应的 ACS(Assertion Consumer Service)地址。这是 Zabbix 接收 Casdoor 发来的 SAML 断言的地址。

Reply URL

第 5 步:创建 Zabbix 用户​

在 Zabbix 中创建一个测试用户来验证 SSO。

  1. 登录 Zabbix 管理界面,找到用户管理模块。
  2. 创建一个用户(例如用户名 test)。

创建 Zabbix 用户

第 6 步:创建 Casdoor 用户​

在 Casdoor 中添加一个与 Zabbix 中用户名相同的用户。

  1. 登录 Casdoor 管理界面,找到用户管理模块。
  2. 添加一个与 Zabbix 中用户名相同的新用户。
  3. 选择 Zabbix,并填写用户的邮箱地址。

创建 Casdoor 用户

第 7 步:Zabbix 登录流程​

完成以上步骤后,测试 SSO。

打开浏览器访问 localhost/index.php。

登录流程 1

点击 Sign in with Single Sign - On(SAML)。

你会被跳转到 Casdoor,输入用户名和密码登录。

登录流程 2

登录成功后会跳回 https://localhost:8080/zabbix.index.php,说明 SSO 已生效。

登录流程 3

完成这些步骤后,Zabbix 与 Casdoor 的 SSO 集成就完成了。遇到问题请参考相关文档或社区论坛。