在不同浏览器中配置Kerberos认证

时间:2020-01-09 10:46:22  来源:igfitidea点击:

在本文中,我们将研究如何为Windows域中的不同浏览器配置Kerberos身份验证,以便在web服务器上启用透明和安全的身份验证,而无需在企业网络中重新输入用户的密码。大多数现代浏览器(如Chrome、Firefox)都支持Kerberos,但是,我们必须执行一些额外的步骤才能使其正常工作。

要允许浏览器在web服务器上进行身份验证,必须满足以下条件:

必须在web服务器端启用Kerberos支持(为IIS网站设置Kerberos身份验证的示例);

用户必须有权访问Web服务器;

用户必须在其使用Kerberos加入Active Directory的计算机上进行身份验证(必须具有有效的TGT-Kerberos票证授予票证)。

例如,我们希望允许Kerberos客户机使用浏览器在theitroad.本地域(必须使用DNS或者FQDN名称,而不是web服务器的IP地址)。

在internetexplorer中启用Kerberos身份验证

让我们考虑一下如何在InternetExplorer11中启用Kerberos身份验证。

我们提醒我们,自2015年1月以来,唯一官方支持的Internet Explorer版本是IE11.

进入 互联网选项-> 安全-> 本地内网,点击 站点-> 高级。将以下条目添加到区域:

https://*.theitroad.local
http://*.theitroad.local

我们可以使用组策略将站点添加到此区域: 计算机配置->管理模板->Windows组件->Internet Explorer->Internet控制面板->安全页->站点到区域分配。为每个网站添加值为1的条目。请参阅文章“How to disable Open File security warning on Windows for the files download from Internet”(如何禁用Windows上的打开文件安全警告)一文中的示例。

然后转到 高级选项卡,在 安全部分,确保选中了 启用集成Windows身份验证选项。


重要。确保启用了Kerberos身份验证的网站仅存在于本地intranet区域中。包含在受信任站点区域中的网站的Kerberos令牌不会发送到相应的web服务器。

如何在Google Chrome中启用Kerberos认证

要使SSO在googlechrome中工作,请使用上述方法配置internetexplorer(Chrome使用IE设置)。另外,需要注意的是,Chrome的所有新版本都会在网站上自动检测Kerberos支持。如果我们使用的是较早的Chrome(Chrome)版本,请使用以下参数运行它,以使web服务器上的Kerberos身份验证正常工作:

--auth-server-whitelist="*.theitroad.local"
--auth-negotiate-delegate-whitelist="*.theitroad.local"

例如:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --auth-server-whitelist="*.theitroad.local " --auth-negotiate-delegate-whitelist="*.theitroad.local"

我们可以使用GPO for Chrome(AuthServerWhitelist策略)或者使用注册表项HKLM\SOFTWARE\Policies\Google\Chrome中的注册表参数 AuthNegotiateDelegateWhitelist配置这些设置(如何使用GPO部署注册表项)。

要使更改生效,请重新启动浏览器并使用重置Ketberos票证

klist purge

见文章(见命令)。

配置Firefox使用Kerberos进行身份验证

默认情况下,Firefox中的Kerberos支持被禁用。要启用它,请打开浏览器配置窗口(转到 关于:配置)在地址栏中)。然后在下面的参数中指定要使用Kerberos身份验证的web服务器的地址。

network.negotiate-auth.trusted-uris
network.automatic-ntlm-auth.trusted-uris

为了方便起见,我们可以禁用在Mozilla Firefox地址栏中强制输入FQDN服务器地址,方法是启用 网络.协商-授权允许-非fqdn参数。

我们可以使用Fiddler或者确保浏览器已通过服务器上的Kerberos身份验证

klist tickets

命令。