Kerberos/SPNEGO身份验证
Casdoor 支持 Kerberos/SPNEGO(集成 Windows 身份验证),可在企业环境中实现无缝单点登录,这些环境中的用户已针对 Kerberos 密钥分发中心(KDC )进行身份验证,通常为 Active Directory。 浏览器会透明地呈现SPNEGO令牌——用户无需输入凭据即可登录。
工作原理
- 浏览器向Casdoor端点
/api/kerberos-login?application=<0>. - 如果未提供
Authorization: Negotiate标头,Casdoor将响应401 WWW-Authenticate: Negotiate。 - 浏览器获取Kerberos服务票据,并将其作为SPNEGO令牌在
Authorization: Negotiate<0>. - Casdoor 使用组织的 keytab 验证令牌,并将 Kerberos 主体名称映射到 Casdoor 用户。
- 成功时,Casdoor 会正常登录用户并颁发授权码或会话。
配置
Kerberos设置按组织划分。 打开组织编辑页面并填写以下字段:
| 字段 | 描述 |
|---|---|
| Kerberos领域 | Kerberos领域名称,通常为大写域名(例如CORP.EXAMPLE.COM)。 |
| Kerberos KDC主机 | 密钥分发中心的主机名或IP地址(例如dc.corp.example.com)。 |
| Kerberos keytab | 服务主体的Base64编码密钥表文件。 |
| Kerberos服务名称 | 服务主体前缀(默认:HTTP)。 完整的SPN是<0>/<1>@<2>. |
生成密钥表
在Windows域控制器上,运行:
ktpass -princ HTTP/casdoor.corp.example.com@CORP.EXAMPLE.COM ^
-mapuser casdoor-svc@corp.example.com ^
-crypto AES256-SHA1 ^
-ptype KRB5_NT_PRINCIPAL ^
-pass * ^
-out casdoor.keytab
然后对文件进行Base64编码,并将结果粘贴到Kerberos密钥表中:
# Linux/macOS
base64 casdoor.keytab