我能够kinit + klist
在 Mac + Windows 上成功验证票据。我甚至将我的 Kerberos 配置转移到“KerberosForWindows”。
似乎 Windows 上的任何浏览器都无法执行 Kerberos 样式协商,而不是 Windows 样式的 NTLM。是这样的吗?
我已尝试了所有本地站点 / 内部网 / 受信任域 / 浏览器配置传播域以进行协商身份验证。我只是想确认 Windows 浏览器是否可以进行 GSSAPI 样式协商。
// Kerberos authentication middleware
async function kerberosAuth(req, res, next) {
// Check for the Authorization header and extract the token
const authHeader = req.headers['authorization'];
if (!authHeader || !authHeader.startsWith('Negotiate ')) {
res.setHeader('WWW-Authenticate', 'Negotiate');
return res.status(401).send('Kerberos authentication required');
}
const token = authHeader.slice('Negotiate '.length);
// Base64 decode the token
const decodedToken = Buffer.from(token, 'base64');
// Check if it's NTLM
if (decodedToken.toString('hex').startsWith('4e544c4d')) {
// always hit on Windows
return res.status(500).send('NTLM is not supported. Please use Kerberos authentication.');
} else {
// only ever hit on Mac/Linux
}