将 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 |
|
这种情况请向上翻至配置 Casdoor 部分,修改 Access Token格式 为 JWT-Empty 即可。
将 Casdoor 作为 PVE 的 OAuth 单点登录提供商
https://blog.byteloid.one/2025/07/22/using-casdoor-as-pve-oauth/