我在使用 Kerberos 在测试环境中配置 IIS 7.0 网站时遇到了问题。我有一个 Windows Server 2008 R2 试用版,其中安装了 AD DS、AD RMS、DHCP、DNS 和 IIS 角色。我已进入网站的 IIS 安全设置并设置 Windows 身份验证以允许 Kerberos 登录。
我遇到的问题是它通常不使用 Kerberos 作为安全协议。当我将 IIS 中的提供程序设置为“协商”时,Fiddler2 指示标头将在 50% 的时间内返回 NTLM 标头,在另外 50% 的时间内返回 Kerberos 标头。如果我在 IIS 中将提供程序设置为“协商:Kerberos”,我根本无法访问该站点,因为它会立即报告 401 错误。此外,使用 Linux 计算机以任何一种配置连接到该站点的任何尝试都会立即指向 401 安全错误。
有人可以提供一些关于如何配置它的见解或指南吗?除了启用 Kerberos 之外,我特别需要阻止任何回退到 NTLM,无论我连接到哪台机器。到目前为止,我还没有找到任何 technet 或 serverfault 文章可以完全解决这个问题。
答案1
在 Firefox 中,您需要在 about:config 下进行设置以使用 Kerberos网络.协商-身份验证.受信任的 URI和网络.协商-身份验证.委托-uri。
对于 Chrome/chromium 尝试chromium-browser –auth-server-whitelist=”company.com”
答案2
如果您想要设置 Linux 服务/应用程序来对 IIS 服务端点进行身份验证,您可以让 Linux 机器对 IIS 托管的 Windows 站点进行身份验证,如下所示:
- 确保您的 IIS 站点 Windows 身份验证提供商对于 Windows Auth 按以下顺序设置:
- NTLM
- 谈判
- 为您想要验证的帐户创建一个主体:
- 使用 kerberos 工具登录域中的 Windows 服务器(通常是 AD 服务器)
- 注册服务主体名称(SPN)针对您要验证的帐户,同时生成 Kerberos 密钥表文件:
- 使用密码为 Linux 生成密钥表
ktpass -princ HTTP/[email protected] -ptype KRB5_NT_PRINCIPAL -mapuser myuser -pass mypassword -out c:\user.keytab
- 注意:URL 必须与
myiis.site.com
你将要访问的端点相匹配;并且SITE.COM
必须与你的领域组件。
- 您可以使用以下方式检查您的 SPN
setspn -L myuser
- 此时,您现在有一个映射到 AD 用户的 SPN;以及一个用于 Linux 的 Kerberos 密钥表文件,以获取由 KDC(AD 服务器)颁发的 kerberos 票证,以便使用 Negotiate 提供程序进行身份验证。
- 根据 Kerberos 的风格,将您的密钥表导入 Linux 机器/应用程序。要查看密钥表中的凭证,请执行以下操作: