将 Casdoor 作为 PVE 的 OAuth 单点登录提供商

最近将 PVE 的单点登录提供商从 Authentik 更换为了 Casdoor,却踩到了意想不到的坑,这篇文章用于记录如何将 Casdoor 作为 PVE 的单点登录方式。

需要准备的

Casdoor 和 PVE 实例,相关搭建教程互联网上应该有不少。

注意:如果你使用的是 1Panel 的一键反代功能设置的 Casdoor 反代,请一定要检查 OpenResty 的配置文件,1Panel 会默认把 .well-known 反代到其他目录下,请手动移除它,并确保 /.well-known 正确反代至 Casdoor!

配置 Casdoor 应用

尽管可以直接使用现成的应用,但我更推荐新建一个新应用专门用于 PVE 验证。

新建应用后,修改 Access Token格式JWT-Empty,并确保 证书Token签名算法RS256(理论上其他 RSA 算法也可以用,但是我没有测试)。

Access Token 格式一定要设置为 JWT-Empty,否则会遇到无法登入 PVE 的问题!

添加重定向 URL 为你的 PVE 地址,带 http/https 头(如 https://pve.example.com:8006 )。

复制下客户端ID和客户端密钥用于后续步骤,其中,客户端密钥可以设置为空。

配置 PVE OpenID 领域

转到数据中心 - 权限 - 领域,点击添加 - OpenID 连接服务器,填写以下内容:

  • 发行人URL:填写你的 Casdoor 地址,需带上 http/https 协议头(如 https://casdoor.example.com ),地址后面不需要带斜杠。
  • 领域:填写你想设定的领域名称,会显示为类似 @领域 这种格式(如 casdoor)。
  • 客户端 ID:填写 Casdoor 应用的客户端ID。
  • 客户端秘钥:填写 Casdoor 应用的客户端密钥(可以留空)。
  • 范围:填写 openid profile email
  • 自动创建用户:可选,会在首次登录的时候自动在 PVE 创建对应的账户。
  • 用户名声明:填写 name

随后确认并保存即可,此时可以测试是否可以登入 PVE。

常见问题

未添加证书到 PVE 上

具体表现为登入时报错 500。

打开 Casdoor,转到身份验证 - 证书,下载证书后添加到 PVE 上,重启 PVE 即可解决。

未修改 Access Token 格式

具体表现为登入时报错 401,日志如下:

1
pvedaemon[214662]: openid authentication failure; rhost=<ip> msg=Failed to contact token endpoint: Failed to parse server response

这种情况请向上翻至配置 Casdoor 部分,修改 Access Token格式JWT-Empty 即可。


将 Casdoor 作为 PVE 的 OAuth 单点登录提供商
https://blog.byteloid.one/2025/07/22/using-casdoor-as-pve-oauth/
作者
bingxin666
发布于
2025年7月22日
许可协议