首页 > 解决方案 > NTLM 身份验证无效字符

问题描述

我有个问题。当我尝试访问我的 Web 应用程序时,出现此错误

'NTLM TlRMTVNTUAACAAAAAAAAAACgAAAABggAAAAICAgAAAAAAAAAAAAAAAA==\n' 的响应标头 'WWW-Authenticate' 值包含无效字符,正在中止请求

我阅读了 NTLM 身份验证及其工作原理,但我不明白为什么响应中有特殊字符 \n 以及如何修复它。

有人有同样的问题吗?

解决

byte[] msg1 = { (byte) 'N', (byte) 'T', (byte) 'L',
                        (byte) 'M', (byte) 'S', (byte) 'S', (byte) 'P', z,
                        (byte) 2, z, z, z, z, z, z, z, (byte) 40, z, z, z,
                        (byte) 1, (byte) 130, z, z, z, (byte) 2, (byte) 2,
                        (byte) 2, z, z, z, z, z, z, z, z, z, z, z, z };
                res.setHeader("WWW-Authenticate", "NTLM "
                        + new sun.misc.BASE64Encoder().encodeBuffer(msg1).trim());
                res.sendError(HttpServletResponse.SC_UNAUTHORIZED);

在这种情况下,我添加了 trim() 函数,这对我有用!!

标签: linuxhttpauthenticationntlm

解决方案


解决

byte[] msg1 = { (byte) 'N', (byte) 'T', (byte) 'L',
                        (byte) 'M', (byte) 'S', (byte) 'S', (byte) 'P', z,
                        (byte) 2, z, z, z, z, z, z, z, (byte) 40, z, z, z,
                        (byte) 1, (byte) 130, z, z, z, (byte) 2, (byte) 2,
                        (byte) 2, z, z, z, z, z, z, z, z, z, z, z, z };
                res.setHeader("WWW-Authenticate", "NTLM "
                        + new sun.misc.BASE64Encoder().encodeBuffer(msg1).trim());
                res.sendError(HttpServletResponse.SC_UNAUTHORIZED);

在这种情况下,我添加了 trim() 函数,这对我有用!!– 特拉维斯_91


推荐阅读