这是我从未真正能够回答的问题:在IIS中使用Kerberos身份验证而不是NTLM的真正优势是什么?

我已经看到很多人真的很难设置它(包括我自己)并且我没有能够找到使用它的充分理由.必须有一些相当显着的优点,否则设置它不值得一试,对吧?

仅从 Windows的角度来看:

NTLM

>适用于外部(非域)和内部客户端
>适用于IIS框中的域帐户和本地用户帐户

>使用域帐户,只有服务器需要直接连接到域控制器(DC)
>使用本地帐户,你不需要任何地方连接:)
>您无需以相关用户身份登录即可使用凭据
>除此之外:DC不会被繁忙的NTLM服务器(IIS,Exchange,TMG / ISA等)以及NTLM请求的数量所淹没(缓解:MaxConcurrentAPI,AuthPersistSingleRequest (false),更快的DC).(Self-referential bonus. )

>要求客户端仅连接到IIS服务器(在站点端口上,没有别的.即一切都通过HTTP(或HTTPS)发生.)
>可以遍历任何支持HTTP Keep-Alives的代理

>您可以使用TLS / SSL解决其他问题

>需要多次往返进行身份验证,使用小数据包

>(日志模式为401.2,401.1,200用户名)

>不能用于需要双跳认证的场景

>即,用户的凭证将被转发到另一台计算机上的服务

>支持旧客户端(< Win2000)
>易受LM Auth Level差异的影响(lmcompatibilitylevel不匹配)
如果Curb失败,>将被Negotiate包用作后备.

>(不是“如果使用Curb拒绝访问”,Curb必须中断才能使用NTLM – 通常这看起来没有获得票证.如果客户获得票证并且它不完美,那么这不会导致后退.)

Kerberos的

>仅适用于当前加入域的客户

>要求客户端连接到AD DC(tcp / udp 88)和服务器(客户端通过Curb端口从DC检索票证,然后使用HTTP提供给服务器)

>可能能够遍历代理,但请参阅上面的DC点:您仍然需要与活动DC在同一网络上,服务器也是如此.

>所以理论上如果你有一个域名,互联网连接的客户端直接与互联网连接的DC聊天,它是可行的.但除非你已经知道,否则不要这样做.
>在反向代理方案(ISA / TMG)中,protocol transition服务器需要在该网络上,即不是客户端…但是客户端实际上不是那个执行Kerberos位的服务器(必然 – 认为Forms auth to Curb过渡).

>票证是长寿命的(10h)意味着在票证生命周期中更少的DC通信 – 并强调:这可以在整个生命周期内为每个客户节省数千到数百万的请求 – (AuthPersistNonNTLM仍然是一件事; Kerberos PAC validation曾经是一件事)
>需要单次往返进行身份验证,但身份验证有效负载大小相对较大(通常为6-16K)(401,{(编码)令牌大小} 200)
>可以与(请始终受约束)委派一起使用,以启用连接用户对下一个服务的Windows身份验证

>例如,要允许UserA访问IIS,并在IIS访问sql Server时使用相同的用户帐户,这就是“身份验证委派”.
>(在此上下文中受约束意味着“但不是其他任何东西”,例如Exchange或其他sql框)

>目前是协商身份验证的主要安全包

>意味着Windows域成员在获得它时更喜欢它

>需要注册SPN,这可能很棘手. Rules that help.
>需要使用名称作为目标,而不是IP地址
>理由可能会失败:

>使用IP地址而不是名称
>没有SPN注册
>重复注册的SPN
> SPN注册了错误的帐户(KRB_ERR_AP_MODIFIED)
>没有客户端DNS / DC连接
>客户端代理设置/本地Intranet区域未用于目标站点

我们在这里:

基本

>可以多跳.但是通过将您的用户名和密码直接暴露给目标Web应用程序来实现

>然后可以随心所欲地做任何事情.任何东西.
>“哦,域管理员刚刚使用我的应用程序吗?我刚读过他们的电子邮件吗?然后重置密码?Awww.Pity”

>需要传输层安全性(即TLS / SSL)以实现任何形式的安全性.

>然后,请参阅上一期

>适用于任何浏览器

>(但请看第一期)

>需要单次往返进行身份验证(401,200)
>可以在多跳场景中使用,因为Windows可以使用基本凭据执行交互式登录

>可能需要将LogonType配置为完成此操作(认为默认情况下在2000和2003之间更改为网络明文,但可能是错误记录)
>但是再次看到第一期.
>给人的印象是第一个问题真的非常重要吗?它是.

总结一下:

Curb设置起来可能很棘手,但是有大量的指南(my one)试图简化这个过程,并且工具在2003年到2008年间有了很大的改进(SetSPN可以搜索重复项,这是最常见的问题; use SETSPN -S任何时候你看到使用-A的指导,生活会更快乐.

受限制的代表团值得入场费用.

为什么在IIS中使用Kerberos而不是NTLM?的更多相关文章

  1. 运行Node.js的IIS扩展iisnode安装配置笔记

    这篇文章主要介绍了运行Node.js的IIS扩展iisnode安装配置笔记,iisnode的扩展可以把Node.js程序托管到IIS,托管之后也意味着可以使用IIS里面的各种功能,需要的朋友可以参考下

  2. 在IIS下安装PHP扩展的方法(超简单)

    这篇文章主要介绍了在IIS下安装PHP扩展的方法,非常简单,具有参考借鉴价值,需要的朋友可以参考下

  3. IIS 7.5 asp Session超时时间设置方法

    这篇文章主要介绍了IIS 7.5中asp Session超时时间设置方法,需要的朋友可以参考一下

  4. Win10 下安装配置IIS + MySQL + nginx + php7.1.7

    本文给大家分享的是在WIN10系统中,安装配置IIS + MySQL5.7.19 + nginx1.12.1 + php7.1.7的详细教程,非常实用,有需要的小伙伴可以参考下

  5. IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置

    IIS即可以支持php也可以支持asp.相信得到不少人青睐.下面的配置文档希望可以帮助大家顺利完成php环境搭建.不正确的地方请大家指正批评.

  6. IIS服务器中部署PHP案例详解

    这篇文章主要介绍了IIS服务器中部署PHP案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

  7. Windows2003下php5.4安装配置教程(IIS)

    这篇文章主要为大家详细介绍了在Windows2003下IIS与php5.4配置教程,感兴趣的小伙伴们可以参考一下

  8. 使用iis运行的django web服务器不支持;t运行静态css js图像文件

    嗨,我有一个djangoweb服务器项目在ISP上运行,静态文件不工作如何更改Internet信息服务和webcoig文件以使静态文件正常工作?

  9. 如何在没有目标url的情况下发布?

    我在“协会”部分没有链接。没有他,我怎么能发布项目?IIS公司与2022年相比

  10. wcf – ClientCredentialType = Windows和= Ntlm之间的差异

    FeedbackID=354236这种情况听起来类似于clientCredentialType=Windows在域帐户下运行时失败,并且在本地帐户下运行时工作).问题是建议的修复程序需要更改WCF客户端配置文件–但在我的情况下,我使用SOAP1.1与非WCF客户端.clientCredentialType=Windows使用内置的Windows身份验证,可以通过ActiveDirectory和NTLM.显然,NTLM类型将仅使用NTLM进行身份验证.我相信你已经看过了,但这里是WCF安全性的链接:http

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部